Checklist For SQLite

  1. Compiler warning checks.
    1. Linux GCC -Wall -Wextra (the tool/warnings.sh script)
    2. Mac GCC -Wall -Wextra (the tool/warnings.sh script)
    3. OpenBSD GCC using options -Wall
    4. Windows MSVC Win32 /W3
    5. Windows MSVC Win64 /W3
    6. sh tool/warnings-clang.sh

  2. Documentation checks:
    1. Latest release on the index.html page
    2. Release announcement in changes.in
    3. Release accouncement in news.html
    4. No unresolved hyperlinks in the documentation build
    5. Requirements marks are up-to-date in both documentation and source code
    6. The compile-time options are all up-to-date (compile.html)
    7. Check new/changed documentation for spelling and gramatical mistakes

  3. Source code change review. "fossil diff --from version- --to branch-3.8.7"
    1. No stray changes
    2. All significant changes are mentioned in the "changes" log of the documentation
    3. New code complies with style guidelines
    4. New code complies with design rules
    5. Comments have been updated to reflect code changes
    6. Variables and functions have been renamed to reflect changes in their use
    7. Check all calls to sqlite3OsRead() and sqlite3OsWrite() to ensure that offset computations are 64-bit clean.
    8. Check all calls to memory allocation routines to ensure that size computations are 64-bit clean. Suggested regular expression for search: /(Re|M)alloc[FORZa-z]*(/
    9. Verify that source code contains no tabs and that surplus whitespace has been removed.
    10. Verify that the list of APIs exposed via the extension header is up-to-date (sqlite3ext.h)

  4. OMIT, ENABLE, and DISABLE options:
    1. tclsh ../tool/omittest.tcl -skip_run -target libsqlite3.a

  5. Tests for platform Linux x86_64:
    1. tclsh th3make cov.rc (verify 100% branch test coverage)
    2. tclsh th3make cov.rc -DHAVE_MALLOC_H -DHAVE_MALLOC_USABLE_SIZE (verify 100% branch test coverage)
    3. tclsh th3make cov.rc -DSQLITE_ENABLE_STAT4 (verify 100% branch test coverage)
    4. tclsh releasetest.tcl
    5. tclsh fulltest.tcl fast.rc test.rc
    6. tclsh th3make memdebug.rc
    7. tclsh th3make test-ex.rc
    8. tclsh th3make test.rc CC=clang
    9. tclsh th3make fast.rc CC=clang
    10. ./mptester x.db mptest/crash01.test
    11. ./mptester x.db mptest/multiwrite01.test

  6. Tests for 32-bit x86 Linux
    1. tclsh th3make test.rc -m32
    2. tclsh th3make test.rc CC=clang -m32
    3. tclsh th3make quick.rc -m32

  7. Tests for platform Linux ARM (BeagleBoard)
    1. tclsh th3make min.rc

  8. Tests for platform Mac OS-X x86:
    1. tclsh releasetest.tcl
    2. tclsh fulltest.tcl min.rc
    3. tclsh th3make fast.rc CC=clang

  9. Tests for platform Win32/64:
    1. make fulltestonly
    2. th3make test.rc
    3. th3make fast.rc
    4. Verify that EXEs and DLLs generated using MSVC contain the correct version number, product name, description, and copyright as resources.
    5. th3make msvc.rc test.rc /RTC1
    6. nmake /f makefile.msc DEBUG=2 test

  10. Tests for platform Android:
    1. th3make quick.rc

  11. Tests for platform OpenBSD x86:
    1. make test

  12. Tests for platform Solaris Sparc:
    1. th3make fast.rc

  13. Other test performed on any available platform:
    1. th3make alignment2.rc test.rc
    2. th3make quick.rc -DHAVE_LOCALTIME_R
    3. th3make test.rc -DSQLITE_THREADSAFE=0
    4. th3make test.rc -ftrapv
    5. OPTS=-DSQLITE_SMALL_STACK make sqlite3.c; th3make quick.rc -DSQLITE_SMALL_STACK
    6. th3make test.rc CC=clang -fsanitize=undefined
    7. th3make quick.rc -DSQLITE_MAX_ATTACHED=125
    8. th3make quick.rc -valgrind
    9. th3make quick.rc -DSQLITE_ENABLE_STAT4 -valgrind
    10. valgrind testfixture permutations.test valgrind
    11. th3make quick.rc -DSQLITE_TRACE_SIZE_LIMIT=15
    12. th3make quick.rc -funsigned-char
    13. th3make quick.rc -fsigned-char
    14. th3make quick.rc -DSQLITE_ENABLE_MEMSYS5 -DTH3_LOWMEM
    16. th3make quick.rc -DSQLITE_TEST_REALLOC_STRESS
    17. th3make test.rc ../th3private/*.test
    18. ./configure; make fulltest

  14. Sqllogictest:
    1. Checked in latest SQLite amalgamation
    2. No compiler warnings
    3. run-all.sh with no errors

  15. Build using the configure/make in main source tree.
    1. Make sure that autoconf has been run to update the configure script.
    2. Run "make test" to verify that the build works.
    3. Verify the correct version numbers have been installed.
    4. Verify that the --disable-amalgamation option to configure works.
    5. Works on Linux

  16. Exported symbol checks: tool/symbols.sh
    1. No private symbols exported. (This is also checked by releasetest.tcl)
    2. No undesirable library dependencies
    3. No private symbols exported in MinGW (check using tool/symbols-mingw.sh)
    4. No undesirable library dependencies on MinGW

  17. Fossil updated to use the latest SQLite.
    1. No compiler warnings
    2. Used on active websites with no issues

  18. Firefox recompiled using lastest SQLite.
    1. No SQLite compiler warnings
    2. Active use with no issues noted

  19. CEROD tests in the test/ subdirectory.
  20. SEE tests using TH3:
    1. see.c

  21. ZIPVFS tests:
    1. testfixture ../zipvfs/test/zipvfs.test (See test/README.txt in the ZIPVFS source tree for details.)
    2. th3make zipvfs.rc test.rc

  22. NX-Devkit compiles and runs "tclsh th3make test.rc nx_compress.o" without error.
  23. Amalgamation autoconf tarball.
    1. Builds
    2. Works on Linux
    3. Works on Mac

  24. Run performance tests comparing the new SQLite release against the previous release.
    1. The speedtest1 program

  25. Run "make wordcount; bash run-wordcount.bash $OPTIONS" with options:
    1. bash run-wordcount.sh sqlite3.c
    2. bash run-wordcount.sh sqlite3.c --cachesize 5 --nosync

  26. Verify that the amalgamation builds are byte-for-byte identical on all workstation platforms.
    1. linux
    2. mac
    3. openbsd
    4. windows native mingw
    5. windows nmake
    6. sparc solaris using autoconf

  27. Build and verify correct operation of sqlite3_analyzer on:
    1. Linux
    2. Mac
    3. Win32

  28. Verify that the sqlite3-all.c build target works and that the resulting sqlite3-all.c file and its include files (sqlite3-?.c) compile and run the same as the single-file amalgamation. s