Index: test/commit-warning.test ================================================================== --- test/commit-warning.test +++ test/commit-warning.test @@ -161,146 +161,146 @@ # be fragile as development progresses. # # Unless the real goal of this test is to document a collection # of source files that MUST NEVER BE TEXT. # -run_in_checkout { +test_block_in_checkout pre-commit-warnings-fossil-1 { fossil test-commit-warning --no-settings -} - -test pre-commit-warnings-fossil-1 {[normalize_result] eq \ - [subst -nocommands -novariables [string trim { -1\tart/branching.odp\tbinary data -1\tart/concept1.dia\tbinary data -1\tart/concept2.dia\tbinary data -1\tcompat/zlib/contrib/blast/test.pk\tbinary data -1\tcompat/zlib/contrib/dotzlib/DotZLib.build\tCR/LF line endings -1\tcompat/zlib/contrib/dotzlib/DotZLib.chm\tbinary data -1\tcompat/zlib/contrib/dotzlib/DotZLib.sln\tCR/LF line endings -1\tcompat/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs\tCR/LF line endings -1\tcompat/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs\tinvalid UTF-8 -1\tcompat/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs\tinvalid UTF-8 -1\tcompat/zlib/contrib/dotzlib/DotZLib/CodecBase.cs\tinvalid UTF-8 -1\tcompat/zlib/contrib/dotzlib/DotZLib/Deflater.cs\tinvalid UTF-8 -1\tcompat/zlib/contrib/dotzlib/DotZLib/DotZLib.cs\tinvalid UTF-8 -1\tcompat/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj\tCR/LF line endings -1\tcompat/zlib/contrib/dotzlib/DotZLib/GZipStream.cs\tinvalid UTF-8 -1\tcompat/zlib/contrib/dotzlib/DotZLib/Inflater.cs\tinvalid UTF-8 -1\tcompat/zlib/contrib/dotzlib/DotZLib/UnitTests.cs\tCR/LF line endings -1\tcompat/zlib/contrib/dotzlib/LICENSE_1_0.txt\tCR/LF line endings -1\tcompat/zlib/contrib/dotzlib/readme.txt\tCR/LF line endings -1\tcompat/zlib/contrib/gcc_gvmat64/gvmat64.S\tCR/LF line endings -1\tcompat/zlib/contrib/masmx64/bld_ml64.bat\tCR/LF line endings -1\tcompat/zlib/contrib/masmx64/gvmat64.asm\tCR/LF line endings -1\tcompat/zlib/contrib/masmx64/inffas8664.c\tCR/LF line endings -1\tcompat/zlib/contrib/masmx64/inffasx64.asm\tCR/LF line endings -1\tcompat/zlib/contrib/masmx64/readme.txt\tCR/LF line endings -1\tcompat/zlib/contrib/masmx86/bld_ml32.bat\tCR/LF line endings -1\tcompat/zlib/contrib/masmx86/inffas32.asm\tCR/LF line endings -1\tcompat/zlib/contrib/masmx86/match686.asm\tCR/LF line endings -1\tcompat/zlib/contrib/masmx86/readme.txt\tCR/LF line endings -1\tcompat/zlib/contrib/puff/zeros.raw\tbinary data -1\tcompat/zlib/contrib/testzlib/testzlib.c\tCR/LF line endings -1\tcompat/zlib/contrib/testzlib/testzlib.txt\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/readme.txt\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/miniunz.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/minizip.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/testzlib.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/zlib.rc\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/zlibvc.def\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/zlibvc.sln\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/miniunz.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/minizip.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/testzlib.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/zlib.rc\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/zlibstat.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/zlibvc.def\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/zlibvc.sln\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc11/zlibvc.vcxproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc12/zlibvc.def\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc14/zlibvc.def\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/miniunz.vcproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/minizip.vcproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/testzlib.vcproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/testzlibdll.vcproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/zlib.rc\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/zlibstat.vcproj\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/zlibvc.def\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/zlibvc.sln\tCR/LF line endings -1\tcompat/zlib/contrib/vstudio/vc9/zlibvc.vcproj\tCR/LF line endings -1\tcompat/zlib/win32/zlib.def\tCR/LF line endings -1\tcompat/zlib/zlib.3.pdf\tbinary data -1\tcompat/zlib/zlib.map\tCR/LF line endings -1\tsetup/fossil.iss\tCR/LF line endings -1\tskins/blitz/arrow_project.png\tbinary data -1\tskins/blitz/dir.png\tbinary data -1\tskins/blitz/file.png\tbinary data -1\tskins/blitz/fossil_100.png\tbinary data -1\tskins/blitz/fossil_80_reversed_darkcyan.png\tbinary data -1\tskins/blitz/fossil_80_reversed_darkcyan_text.png\tbinary data -1\tskins/blitz/rss_20.png\tbinary data -1\tskins/bootstrap/css.txt\tlong lines -1\ttest/th1-docs-input.txt\tCR/LF line endings -1\ttest/th1-hooks-input.txt\tCR/LF line endings -1\ttest/utf16be.txt\tUnicode -1\ttest/utf16le.txt\tUnicode -1\twin/buildmsvc.bat\tCR/LF line endings -1\twin/fossil.ico\tbinary data -1\twin/fossil.rc\tinvalid UTF-8 -1\twww/CollRev1.gif\tbinary data -1\twww/CollRev2.gif\tbinary data -1\twww/CollRev3.gif\tbinary data -1\twww/CollRev4.gif\tbinary data -1\twww/apple-touch-icon.png\tbinary data -1\twww/background.jpg\tbinary data -1\twww/branch01.gif\tbinary data -1\twww/branch02.gif\tbinary data -1\twww/branch03.gif\tbinary data -1\twww/branch04.gif\tbinary data -1\twww/branch05.gif\tbinary data -1\twww/build-icons/linux.gif\tbinary data -1\twww/build-icons/linux64.gif\tbinary data -1\twww/build-icons/mac.gif\tbinary data -1\twww/build-icons/openbsd.gif\tbinary data -1\twww/build-icons/src.gif\tbinary data -1\twww/build-icons/win32.gif\tbinary data -1\twww/concept1.gif\tbinary data -1\twww/concept2.gif\tbinary data -1\twww/copyright-release.pdf\tbinary data -1\twww/delta1.gif\tbinary data -1\twww/delta2.gif\tbinary data -1\twww/delta3.gif\tbinary data -1\twww/delta4.gif\tbinary data -1\twww/delta5.gif\tbinary data -1\twww/delta6.gif\tbinary data -1\twww/encode1.gif\tbinary data -1\twww/encode10.gif\tbinary data -1\twww/encode2.gif\tbinary data -1\twww/encode3.gif\tbinary data -1\twww/encode4.gif\tbinary data -1\twww/encode5.gif\tbinary data -1\twww/encode6.gif\tbinary data -1\twww/encode7.gif\tbinary data -1\twww/encode8.gif\tbinary data -1\twww/encode9.gif\tbinary data -1\twww/fossil.gif\tbinary data -1\twww/fossil2.gif\tbinary data -1\twww/fossil3.gif\tbinary data -1\twww/fossil_logo_small.gif\tbinary data -1\twww/fossil_logo_small2.gif\tbinary data -1\twww/fossil_logo_small3.gif\tbinary data -1\twww/xkcd-git.gif\tbinary data -1}]]} +} { + test pre-commit-warnings-fossil-1 {[normalize_result] eq \ + [subst -nocommands -novariables [string trim { + 1\tart/branching.odp\tbinary data + 1\tart/concept1.dia\tbinary data + 1\tart/concept2.dia\tbinary data + 1\tcompat/zlib/contrib/blast/test.pk\tbinary data + 1\tcompat/zlib/contrib/dotzlib/DotZLib.build\tCR/LF line endings + 1\tcompat/zlib/contrib/dotzlib/DotZLib.chm\tbinary data + 1\tcompat/zlib/contrib/dotzlib/DotZLib.sln\tCR/LF line endings + 1\tcompat/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs\tCR/LF line endings + 1\tcompat/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs\tinvalid UTF-8 + 1\tcompat/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs\tinvalid UTF-8 + 1\tcompat/zlib/contrib/dotzlib/DotZLib/CodecBase.cs\tinvalid UTF-8 + 1\tcompat/zlib/contrib/dotzlib/DotZLib/Deflater.cs\tinvalid UTF-8 + 1\tcompat/zlib/contrib/dotzlib/DotZLib/DotZLib.cs\tinvalid UTF-8 + 1\tcompat/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj\tCR/LF line endings + 1\tcompat/zlib/contrib/dotzlib/DotZLib/GZipStream.cs\tinvalid UTF-8 + 1\tcompat/zlib/contrib/dotzlib/DotZLib/Inflater.cs\tinvalid UTF-8 + 1\tcompat/zlib/contrib/dotzlib/DotZLib/UnitTests.cs\tCR/LF line endings + 1\tcompat/zlib/contrib/dotzlib/LICENSE_1_0.txt\tCR/LF line endings + 1\tcompat/zlib/contrib/dotzlib/readme.txt\tCR/LF line endings + 1\tcompat/zlib/contrib/gcc_gvmat64/gvmat64.S\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx64/bld_ml64.bat\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx64/gvmat64.asm\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx64/inffas8664.c\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx64/inffasx64.asm\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx64/readme.txt\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx86/bld_ml32.bat\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx86/inffas32.asm\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx86/match686.asm\tCR/LF line endings + 1\tcompat/zlib/contrib/masmx86/readme.txt\tCR/LF line endings + 1\tcompat/zlib/contrib/puff/zeros.raw\tbinary data + 1\tcompat/zlib/contrib/testzlib/testzlib.c\tCR/LF line endings + 1\tcompat/zlib/contrib/testzlib/testzlib.txt\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/readme.txt\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/miniunz.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/minizip.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/testzlib.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/zlib.rc\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/zlibvc.def\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/zlibvc.sln\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/miniunz.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/minizip.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/testzlib.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/zlib.rc\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/zlibstat.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/zlibvc.def\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/zlibvc.sln\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc11/zlibvc.vcxproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc12/zlibvc.def\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc14/zlibvc.def\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/miniunz.vcproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/minizip.vcproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/testzlib.vcproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/testzlibdll.vcproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/zlib.rc\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/zlibstat.vcproj\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/zlibvc.def\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/zlibvc.sln\tCR/LF line endings + 1\tcompat/zlib/contrib/vstudio/vc9/zlibvc.vcproj\tCR/LF line endings + 1\tcompat/zlib/win32/zlib.def\tCR/LF line endings + 1\tcompat/zlib/zlib.3.pdf\tbinary data + 1\tcompat/zlib/zlib.map\tCR/LF line endings + 1\tsetup/fossil.iss\tCR/LF line endings + 1\tskins/blitz/arrow_project.png\tbinary data + 1\tskins/blitz/dir.png\tbinary data + 1\tskins/blitz/file.png\tbinary data + 1\tskins/blitz/fossil_100.png\tbinary data + 1\tskins/blitz/fossil_80_reversed_darkcyan.png\tbinary data + 1\tskins/blitz/fossil_80_reversed_darkcyan_text.png\tbinary data + 1\tskins/blitz/rss_20.png\tbinary data + 1\tskins/bootstrap/css.txt\tlong lines + 1\ttest/th1-docs-input.txt\tCR/LF line endings + 1\ttest/th1-hooks-input.txt\tCR/LF line endings + 1\ttest/utf16be.txt\tUnicode + 1\ttest/utf16le.txt\tUnicode + 1\twin/buildmsvc.bat\tCR/LF line endings + 1\twin/fossil.ico\tbinary data + 1\twin/fossil.rc\tinvalid UTF-8 + 1\twww/CollRev1.gif\tbinary data + 1\twww/CollRev2.gif\tbinary data + 1\twww/CollRev3.gif\tbinary data + 1\twww/CollRev4.gif\tbinary data + 1\twww/apple-touch-icon.png\tbinary data + 1\twww/background.jpg\tbinary data + 1\twww/branch01.gif\tbinary data + 1\twww/branch02.gif\tbinary data + 1\twww/branch03.gif\tbinary data + 1\twww/branch04.gif\tbinary data + 1\twww/branch05.gif\tbinary data + 1\twww/build-icons/linux.gif\tbinary data + 1\twww/build-icons/linux64.gif\tbinary data + 1\twww/build-icons/mac.gif\tbinary data + 1\twww/build-icons/openbsd.gif\tbinary data + 1\twww/build-icons/src.gif\tbinary data + 1\twww/build-icons/win32.gif\tbinary data + 1\twww/concept1.gif\tbinary data + 1\twww/concept2.gif\tbinary data + 1\twww/copyright-release.pdf\tbinary data + 1\twww/delta1.gif\tbinary data + 1\twww/delta2.gif\tbinary data + 1\twww/delta3.gif\tbinary data + 1\twww/delta4.gif\tbinary data + 1\twww/delta5.gif\tbinary data + 1\twww/delta6.gif\tbinary data + 1\twww/encode1.gif\tbinary data + 1\twww/encode10.gif\tbinary data + 1\twww/encode2.gif\tbinary data + 1\twww/encode3.gif\tbinary data + 1\twww/encode4.gif\tbinary data + 1\twww/encode5.gif\tbinary data + 1\twww/encode6.gif\tbinary data + 1\twww/encode7.gif\tbinary data + 1\twww/encode8.gif\tbinary data + 1\twww/encode9.gif\tbinary data + 1\twww/fossil.gif\tbinary data + 1\twww/fossil2.gif\tbinary data + 1\twww/fossil3.gif\tbinary data + 1\twww/fossil_logo_small.gif\tbinary data + 1\twww/fossil_logo_small2.gif\tbinary data + 1\twww/fossil_logo_small3.gif\tbinary data + 1\twww/xkcd-git.gif\tbinary data + 1}]]} +} ############################################################################### test_cleanup Index: test/tester.tcl ================================================================== --- test/tester.tcl +++ test/tester.tcl @@ -31,14 +31,21 @@ set testrundir [pwd] set testdir [file normalize [file dirname $argv0]] set fossilexe [file normalize [lindex $argv 0]] set is_windows [expr {$::tcl_platform(platform) eq "windows"}] -if {$is_windows && \ - [string length [file extension $fossilexe]] == 0} { - append fossilexe .exe +if {$::is_windows} { + if {[string length [file extension $fossilexe]] == 0} { + append fossilexe .exe + } + set outside_fossil_repo [expr ![file exists "$::testfiledir\\..\\_FOSSIL_"]] +} else { + set outside_fossil_repo [expr ![file exists "$::testfiledir/../.fslckout"]] } + +catch {exec $::fossilexe changes --changed} res +set dirty_ckout [string length $res] set argv [lrange $argv 1 end] set i [lsearch $argv -keep] if {$i>=0} { @@ -517,26 +524,66 @@ fossil test-th-eval --open-config "setting th1-hooks" if {[normalize_result] eq "1"} {return 1} return [info exists ::env(TH1_ENABLE_HOOKS)] } -# This (rarely used) procedure is designed to run a test within the Fossil -# source checkout (e.g. one that does NOT modify any state), while saving -# and restoring the current directory (e.g. one used when running a test -# file outside of the Fossil source checkout). Please do NOT use this -# procedure unless you are absolutely sure it does not modify the state of -# the repository or source checkout in any way. +# Run the given command script inside the Fossil source repo checkout. +# +# Callers of this function must ensure two things: +# +# 1. This test run is in fact being done from within a Fossil repo +# checkout directory. If you are unsure, test $::outside_fossil_repo +# or call one of the test_* wrappers below which do that for you. +# +# As a rule, you should not be calling this function directly! +# +# 2. This test run is being done from a repo checkout directory that +# doesn't have any uncommitted changes. If it does, that affects the +# output of any test based on the output of "fossil status", +# "... diff", etc., which is likely to make the test appear to fail. +# If you must call this function directly, test $::dirty_ckout and +# skip the call if it's true. The test_* wrappers do this for you. # +# 3. The test does NOT modify the Fossil checkout tree in any way. proc run_in_checkout { script {dir ""} } { if {[string length $dir] == 0} {set dir $::testfiledir} set savedPwd [pwd]; cd $dir set code [catch { uplevel 1 $script } result] cd $savedPwd; unset savedPwd return -code $code $result } + +# Wrapper for the above function pair. The tscript parameter is an +# optional post-run test script. Some callers choose instead to put +# the tests inline with the rscript commands. +# +# Be sure to adhere to the requirements of run_in_checkout! +proc test_block_in_checkout { name rscript {tscript ""} } { + if {$::outside_fossil_repo || $::dirty_ckout} { + set $::CODE 0 + set $::RESULT "" + } else { + run_in_checkout $rscript + if {[string length $tscript] == 0} { + return "" + } else { + set code [catch { + uplevel 1 $tscript + } result] + return -code $code $result + } + } +} + +# Single-test wrapper for the above. +proc test_in_checkout { name rscript tscript } { + return test_block_in_checkout name rscript { + test $name $tscript + } +} # Normalize file status lists (like those returned by 'fossil changes') # so they can be compared using simple string comparison # proc normalize_status_list {list} { Index: test/th1-docs.test ================================================================== --- test/th1-docs.test +++ test/th1-docs.test @@ -29,10 +29,18 @@ if {[normalize_result] ne "1"} { puts "Fossil was not compiled with Tcl support." test_cleanup_then_return } + +if {$::outside_fossil_repo} { + puts "Skipping th1-docs-* tests: not in Fossil repo checkout." + test_cleanup_then_return +} elseif ($::dirty_ckout) { + puts "Skipping th1-docs-* tests: uncommitted changes in Fossil checkout." + test_cleanup_then_return +} ############################################################################### test_setup "" Index: test/th1.test ================================================================== --- test/th1.test +++ test/th1.test @@ -553,10 +553,19 @@ fossil test-th-eval "lindex list -0x" test th1-expr-49 {$RESULT eq {TH_ERROR: expected integer, got: "-0x"}} ############################################################################### + +set skip_anycap 1 +if {$::outside_fossil_repo} { + puts "Skipping th1-anycap-*-1 perm tests: not in Fossil repo checkout." +} elseif ($::dirty_ckout) { + puts "Skipping th1-anycap-*-1 perm tests: uncommitted changes in Fossil checkout." +} else { + set skip_anycap 0 +} foreach perm [list a b c d e f g h i j k l m n o p q r s t u v w x y z] { if {$perm eq "u"} continue; # NOTE: Skip "reader" meta-permission. if {$perm eq "v"} continue; # NOTE: Skip "developer" meta-permission. @@ -566,10 +575,12 @@ fossil test-th-eval "hascap $perm" test th1-hascap-no-$perm-1 {$RESULT eq {0}} fossil test-th-eval "anoncap $perm" test th1-anoncap-no-$perm-1 {$RESULT eq {0}} + + if {$skip_anycap} { continue } run_in_checkout { fossil test-th-eval --set-user-caps "anycap $perm" test th1-anycap-yes-$perm-1 {$RESULT eq {1}} @@ -621,11 +632,11 @@ fossil test-th-eval "anoncap o h" test th1-anoncap-no-multiple-2 {$RESULT eq {0}} ############################################################################### -run_in_checkout { +test_block_in_checkout "test-anoncap-*" { fossil test-th-eval --set-user-caps "anycap oh" test th1-anycap-yes-multiple-1 {$RESULT eq {1}} set ::env(TH1_TEST_USER_CAPS) o fossil test-th-eval --set-user-caps "anycap oh" @@ -665,29 +676,25 @@ unset ::env(TH1_TEST_ANON_CAPS) } ############################################################################### -run_in_checkout { +test_in_checkout th1-checkout-1 { # NOTE: The "1" here forces the checkout to be opened. fossil test-th-eval "checkout 1" -} - -test th1-checkout-1 {[string length $RESULT] > 0} +} {[string length $RESULT] > 0} ############################################################################### -run_in_checkout { +test_in_checkout th1-checkout-2 { if {$th1Hooks} { fossil test-th-eval "checkout" } else { # NOTE: No TH1 hooks, force checkout to be populated. fossil test-th-eval --open-config "checkout" } -} - -test th1-checkout-2 {[string length $RESULT] > 0} +} {[string length $RESULT] > 0} ############################################################################### set savedPwd [pwd]; cd / fossil test-th-eval "checkout 1" @@ -762,15 +769,13 @@ fossil test-th-eval "styleHeader {Page Title Here}" test th1-header-1 {$RESULT eq {TH_ERROR: repository unavailable}} ############################################################################### -run_in_checkout { +test_in_checkout th1-header-2 { fossil test-th-eval --open-config "styleHeader {Page Title Here}" -} - -test th1-header-2 {[regexp -- {Fossil: Page Title Here} $RESULT]} +} {[regexp -- {Fossil: Page Title Here} $RESULT]} ############################################################################### fossil test-th-eval "styleFooter" test th1-footer-1 {$RESULT eq {TH_ERROR: repository unavailable}} @@ -848,15 +853,13 @@ fossil test-th-eval "artifact tip" test th1-artifact-2 {$RESULT eq {TH_ERROR: repository unavailable}} ############################################################################### -run_in_checkout { +test_in_checkout th1-artifact-3 { fossil test-th-eval --open-config "artifact tip" -} - -test th1-artifact-3 {[regexp -- {F test/th1\.test [0-9a-f]{40,64}} $RESULT]} +} {[regexp -- {F test/th1\.test [0-9a-f]{40,64}} $RESULT]} ############################################################################### fossil test-th-eval "artifact 0000000000" test th1-artifact-4 {$RESULT eq {TH_ERROR: repository unavailable}} @@ -871,15 +874,13 @@ fossil test-th-eval "artifact tip test/th1.test" test th1-artifact-6 {$RESULT eq {TH_ERROR: repository unavailable}} ############################################################################### -run_in_checkout { +test_in_checkout th1-artifact-7 { fossil test-th-eval --open-config "artifact tip test/th1.test" -} - -test th1-artifact-7 {[regexp -- {th1-artifact-7} $RESULT]} +} {[regexp -- {th1-artifact-7} $RESULT]} ############################################################################### fossil test-th-eval "artifact 0000000000 test/th1.test" test th1-artifact-8 {$RESULT eq {TH_ERROR: repository unavailable}} @@ -889,24 +890,22 @@ fossil test-th-eval --open-config "artifact 0000000000 test/th1.test" test th1-artifact-9 {$RESULT eq {TH_ERROR: manifest not found}} ############################################################################### -run_in_checkout { +test_in_checkout th1-globalState-1 { if {$th1Hooks} { fossil test-th-eval "globalState checkout" } else { # NOTE: No TH1 hooks, force checkout to be populated. fossil test-th-eval --open-config "globalState checkout" } -} - -test th1-globalState-1 {[string length $RESULT] > 0} +} {[string length $RESULT] > 0} ############################################################################### -run_in_checkout { +test_block_in_checkout th1-globalState-2 { if {$th1Hooks} { fossil test-th-eval "globalState checkout" test th1-globalState-2 {$RESULT eq [fossil test-th-eval checkout]} } else { # NOTE: No TH1 hooks, force checkout to be populated. @@ -942,24 +941,22 @@ fossil test-th-eval --errorlog foserrors.log "globalState log" test th1-globalState-7 {$RESULT eq "foserrors.log"} ############################################################################### -run_in_checkout { +test_in_checkout th1-globalState-8 { if {$th1Hooks} { fossil test-th-eval "globalState repository" } else { # NOTE: No TH1 hooks, force repository to be populated. fossil test-th-eval --open-config "globalState repository" } -} - -test th1-globalState-8 {[string length $RESULT] > 0} +} {[string length $RESULT] > 0} ############################################################################### -run_in_checkout { +test_block_in_checkout th1-globalState-9 { if {$th1Hooks} { fossil test-th-eval "globalState repository" test th1-globalState-9 {$RESULT eq [fossil test-th-eval repository]} } else { # NOTE: No TH1 hooks, force repository to be populated. @@ -1603,21 +1600,20 @@ test th1-encode64-2 {$RESULT eq "dGVzdAA="} ############################################################################### # -# TODO: Modify the result of this test if the source file (i.e. -# "ajax/cgi-bin/fossil-json.cgi.example") changes. +# This test will fail if the Fossil source file named below changes. Update +# the expected result string below if that happens. # -run_in_checkout { +test_in_checkout th1-encode64-3 { fossil test-th-eval --open-config \ {encode64 [artifact trunk ajax/cgi-bin/fossil-json.cgi.example]} +} { + $RESULT eq "IyEvcGF0aC90by9mb3NzaWwvYmluYXJ5CnJlcG9zaXRvcnk6IC9wYXRoL3RvL3JlcG8uZnNsCg==" } -test th1-encode64-3 {$RESULT eq \ -"IyEvcGF0aC90by9mb3NzaWwvYmluYXJ5CnJlcG9zaXRvcnk6IC9wYXRoL3RvL3JlcG8uZnNsCg=="} - ############################################################################### fossil test-th-eval {array exists tcl_platform} test th1-platform-1 {$RESULT eq "1"}