Checklist

  1. Test procedure review.

    1. Review the "test/releasetest.tcl" script for completeness and accuracy.
    2. Review "multitest.tcl" and "alignment*.rc" scripts in TH3 for completeness.
    3. Review this checklist for completeness and accuracy.
  2. Source code change review. fossil diff --from release --to trunk

    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).
    11. Significant compile-time options are recognized by the sqlite3_compileoption_used() interface.
  3. Documentation review:

    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. Database footprint is up-to-date (features.html).
    8. Test metrics are up-to-date (testing.html).
    9. Check new/changed documentation for spelling and gramatical mistakes.
  4. Compiler warning checks.

    1. Linux GCC -Wall -Wextra (the "tool/warnings.sh" script)
    2. Mac OS X GCC -Wall -Wextra (the "tool/warnings.sh" script)
    3. OpenBSD GCC using options -Wall
    4. Windows (32-bit) MSVC using option /W4
    5. Windows (64-bit) MSVC using option /W4
  5. OMIT, ENABLE, and DISABLE options:

    1. tclsh ../tool/omittest.tcl -skip_run -target libsqlite3.a
  6. Tests for platform Linux x86_64:

    1. tclsh multitest.tcl (take care to update ../th3private)
    2. Check the "multitest.tcl" log files for undetected errors.
    3. tclsh releasetest.tcl
    4. Check the "releasetest.tcl" log files for undetected errors.
    5. tclsh multitest.tcl --scenario failures - all failures detected
    6. tclsh releasetest.tcl --platform Failure-Detection - all failures detected
    7. sh tool/symbols.sh - no incorrect exports or dependencies
  7. Tests for platform Linux ARM (BeagleBoard)

    1. tclsh th3make min.rc
    2. Recompile and test Fossil.
  8. Tests for platform Mac OS X (x86):

    1. tclsh releasetest.tcl
    2. tclsh multitest.tcl --omit test-ex (after updating th3private)
    3. tclsh multitest.tcl --scenario failures - all failures detected
    4. tclsh releasetest.tcl --platform Failure-Detection - all failures detected
  9. Tests for platform Mac OS X 10.2 (PPC):

    1. tclsh th3make quick.rc
    2. Recompile and test Fossil.
    3. Verify that Fossil repositories are cross-platform with x86/x64.
  10. Tests for platform Windows 7.0/8.x (x86):

    1. tclsh multitest.tcl (after updating th3private)
    2. tclsh multitest.tcl --scenario failures - verify failures detected
    3. tclsh test/releasetest.tcl
    4. tclsh test/releasetest.tcl --msvc
    5. tclsh releasetest.tcl --platform Failure-Detection - all failures detected
    6. nmake /f makefile.msc MEMDEBUG=1 DEBUG=3 fulltestonly
    7. nmake /f makefile.msc WIN32HEAP=1 DEBUG=4 fulltestonly
    8. sh tool/symbols-mingw.sh - no incorrect exports or dependencies
    9. Verify that EXEs and DLLs generated using MSVC contain the correct version number, product name, description, and copyright as resources.
  11. Tests for platform OpenBSD (x86):

    1. make test
    2. th3make quick.rc
  12. Sqllogictest:

    1. Checked in latest SQLite amalgamation.
    2. No SQLite compiler warnings.
    3. tclsh run-all.tcl - on unix
    4. tclsh run-all.tcl - on windows
  13. Build using the configure/make in main source tree.

    1. Make sure that autoconf has been run to update the configure script.
    2. Verify the correct version numbers have been installed.
  14. Fossil updated to use the latest SQLite.

    1. No SQLite compiler warnings.
    2. Used on active websites with no issues.
    3. fossil all dbstat --db-check
  15. Rebuild and use Firefox with the latest SQLite

  16. CEROD tests in the "test/" subdirectory.

  17. SEE tests using TH3:

    1. see.c
    2. see-aes128-ofb.c
    3. see-aes256-ofb.c
    4. see-rc4.c
    5. see-aes128-ccm.c
    6. see-cccrypt.c
    7. At least one of the above using "test.rc".
    8. At least one of the above using "memdebug.rc".
    9. At least one of the above on Linux.
    10. At least one of the above on Mac OS X.
    11. At least one of the above on Windows.
  18. SEE using configure; make test

    1. Linux
    2. Mac
  19. 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
    3. th3make zipvfs.rc memdebug.rc
    4. th3make zipvfs.rc quick.rc -valgrind
    5. th3make zipvfs.rc quick.rc
    6. At least one of the above on Linux.
    7. At least one of the above on Mac OS X.
    8. At least one of the above on Windows.
    9. th3make zipvfs-cov.rc - verify full coverage
  20. NX-Devkit testing

    1. Verify that devkit sources are up-to-date with SQLite and ZIPVFS by running update-src.sh and mkdevkit.tcl in the sbin subdirectory of the devkit source tree. Record nds_sqlite3.[ch] hashes in the comment.
    2. Build using: sh mkdevkit.sh; gcc -o nxc.o -c nx_compress.c
    3. Test using: tclsh th3make test.rc nxc.o -DNDS_ENABLE_COMPRESS
    4. Verify failure if run without -DNDS_ENABLE_COMPRESS
  21. Amalgamation autoconf tarball.

    1. Builds.
    2. Works on Linux.
    3. Works on Mac OS X.
    4. Works on Windows MinGW
    5. Works on Windows MSVC
  22. TEA archive builds correctly and runs:

    1. Linux
    2. Mac OS X
  23. Run performance tests comparing the new SQLite release against the previous release and/or a release from one year ago. Document and justify any performance decrease.

    1. The Tcl "speed*.test" scripts.
    2. The TH3 speed tests.
    3. The "speedtest1" program.
    4. ./speedtest1 --nosync --trace 2 >x.txt; time ./sqlite3 x.db <x.txt >/dev/null
    5. One or more of the above on Linux.
    6. One or more of the above on Windows.
    7. One or more of the above on Mac OS X.
  24. 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
  25. Compute the size of a standard build (gcc -Os -c sqlite3.c) and and record the size change in the comments.

    1. Versus the previous release.
    2. Versus the trunk from 12 months ago.
  26. Verify that the amalgamation builds are byte-for-byte identical on all workstation platforms.

    1. Linux
    2. Mac OS X
    3. OpenBSD
    4. Windows using native MinGW.
    5. Windows using NMAKE.
  27. Verify that databases (including FTS3 and RTREE databases), rollback journals, and WAL files created by the release candidate are readable and writeable by historical versions of SQLite (as long as no unsupported features are used) and vice versa.

  28. Cross-platform tests. Verify the ability of databases, WAL files, and rollback journals to be copied and used between 32-bit and 64-bit systems and between big-endian and little-endian systems.

    1. 32-big to 64-little, database.
    2. 32-big to 64-little, WAL.
    3. 32-big to 64-little, rollback.
    4. 64-little to 32-big, SEE database.
    5. 64-little to 32-big, ZIPVFS database.
    6. 64-little to 32-big, CEROD database.
  29. Build and verify correct operation of sqlite3_analyzer on:

    1. Linux
    2. Mac OS X
    3. Windows (MinGW)
    4. Windows (MSVC)
    5. A database containing WITHOUT ROWID tables.
  30. Build and verify sqldiff

    1. Linux
    2. Mac
    3. Windows
  31. 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.