123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #!/usr/bin/tcl
- #
- # Run this script to test to see that the latest trunk changes can be
- # merged into LTS branches without breaking anything.
- #
- # To Use:
- #
- # * Copy this script into a directory above the sqlite checkout
- # * Run "fossil update trunk" and "fossil revert"
- # * Run "tclsh ../merge-test.tcl" (in other words run this script)
- #
- # Operation:
- #
- # This script changes to each LTS branch to be tested, merges the latest
- # trunk changes into the branch (without committing them) and then
- # runs "make test". Any errors are stored in local files.
- #
- # Limitations:
- #
- # Some LTS branches are not synced directly from trunk but rather from
- # other LTS branches. These other branches cannot be tested because
- # there is no good way to generate the intermediate merges.
- #
- ###############################################################################
- # Run a shell command contained in arguments. Put the return code in
- # global variable ::res and the output string in global variable ::result
- #
- proc safeexec {args} {
- global res result
- set res [catch "exec $args" result]
- }
- # Run the shell command contained in arguments. Print an error and exit
- # if anything goes wrong.
- #
- proc mustbeok {args} {
- global res result
- set res [catch "exec $args" result]
- if {$res} {
- puts "FAILED: $args"
- puts $result
- exit 1
- }
- }
- # Write $content into a file named $filename. The file is overwritten if it
- # already exist. The file is create if it does not already exist.
- #
- proc writefile {filename content} {
- set fd [open $filename wb]
- puts $fd $content
- close $fd
- }
- # Run the merge-test
- #
- foreach {branch configopts} {
- begin-concurrent {--enable-json1}
- begin-concurrent-pnu {--enable-json1}
- wal2 {--enable-all}
- reuse-schema {--enable-all}
- } {
- puts $branch
- set errorfile ${branch}-error.txt
- mustbeok fossil revert
- mustbeok fossil up $branch
- safeexec fossil merge trunk
- if {$res} {
- puts " merge failed - see $errorfile"
- writefile $errorfile $result
- } else {
- puts " merge ok"
- safeexec ./configure --enable-debug {*}$configopts
- if {$res} {
- puts " configure failed - see $errorfile"
- writefile $errorfile $result
- } else {
- puts " configure ok"
- safeexec make fuzzcheck sqlite3 testfixture
- if {$res} {
- puts " build failed - see $errorfile"
- writefile $errorfile $result
- } else {
- puts " build ok"
- safeexec make test
- if {$res} {
- puts " test failed - see $errorfile"
- writefile $errorfile $result
- } else {
- puts " test ok"
- }
- }
- }
- }
- }
- mustbeok fossil revert
- mustbeok fossil up trunk
- puts "reset back to trunk"
|