This patch contains all the Debian-specific changes mixed together.
The reason for doing this, rather than maintaining quilt patches, is
that the Debian-specific changes are maintained as a branch in a
fossil repository.  To review them separately, please inspect the
debian branch in http://people.debian.org/~bap/fossil.fsl
--- fossil-2.27.orig/manifest
+++ fossil-2.27/manifest
@@ -1,5 +1,5 @@
-C Version\s2.27
-D 2025-09-30T11:03:45.450
+C cherrypick\sto\sdisable\sproblematic\stest\scases
+D 2025-10-03T15:30:04.563
 F .editorconfig 132c5a213aa3ce13dcc9c19f8a7ea306e3640bec4ae693378116cee339c34a1a
 F .fossil-settings/binary-glob 679cf0b793f345a23e6dab55174511758d5fa28dd7724f61bab41d2b75c288c2
 F .fossil-settings/clean-glob 3efaf2f54ed450047dea396ef7197ab4a7596654d844ce25c419cc442e2f493f
@@ -30,7 +30,6 @@ F autosetup/cc-lib.tcl 493c5935b5dd3bf9b
 F autosetup/cc-shared.tcl 4f024e94a47f427ba61de1739f6381ef0080210f9fae89112d5c1de1e5460d78
 F autosetup/cc.tcl 7e2fe943ae9d45cf39e9f5b05b6230df8e719415edea5af06c30eb68680bde14
 F autosetup/default.auto f78163e478676728918cbb7360abddb9c830e882
-F autosetup/jimsh0.c 1b5fe91fffcddbc29f2b16acb80f1650632ea2edbe8336b8155ef7b4c66f6d8d
 F autosetup/local.tcl 880f333f665258fcff957d265d49a11040651325a14fd2470a703691db1602c7
 F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
 F autosetup/system.tcl 3a39d6e0b3bfba526fd39afe07c1d0d325e5a31925013a1ba7c671e1128e31bb
@@ -64,7 +63,6 @@ F compat/zlib/contrib/delphi/ZLibConst.p
 F compat/zlib/contrib/delphi/readme.txt 366e08eaa227cd3d09810c45639aedf4879b7ecf
 F compat/zlib/contrib/delphi/zlibd32.mak ddf83b34d4c7d41ace39f96b5cb13fb390c8d2eb
 F compat/zlib/contrib/dotzlib/DotZLib.build 6f87ba12d786feca35738d0e9ce1f0f03f292881
-F compat/zlib/contrib/dotzlib/DotZLib.chm a1245c21c7e918fa2919fd10bbe5604fc81faf49
 F compat/zlib/contrib/dotzlib/DotZLib.sln 4946bdb71b79bff62f9217802b7524010c669408
 F compat/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs 9f1db1177b2e9a014f72bb3cd80be17133e06d16
 F compat/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs 2bdee5893e3a6996eef2ed64d0c64f1910b7dbc1af5e15136909196266497059
@@ -264,7 +262,21 @@ F compat/zlib/zlib.pc.in 3ebc107b34d82b1
 F compat/zlib/zutil.c af69ff1a313b2e3c300fc6ae27205cee2f5a5b103b4c259ad0257c55e6d47ef3
 F compat/zlib/zutil.h d128bc5cf4f5010b4ff86fcf0708b052b88ca9cf9fe75888ba60f3d923d51dc6
 F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x
-F debian/makedeb.sh a6f25e2697977d7865196cc87b67271575681d2fc148256b58bdd574bd49a5d7
+F debian/README.Debian 76e14ce742497e97a3423c97ca790431d3b98e2970fb062bbe48619862b7f519
+F debian/changelog 24ca342bf7d9d91b99623d1cc2719efa398580fb4b1390e2cabe86595982882d
+F debian/clean 65cc2108142dc3df843e4f30c0fcebd3c7a5cfd3e3209eadd8a26a7e00c1e833
+F debian/control 3e6a436524a5cfa05964e6046d949ebb8796d3c8a6dd16775457926b2d04fddf
+F debian/copyright 36d6e9fe8999e44f411afa88ff9c7a3a79682c40438bad1787131f02cb8ca21f
+F debian/fossil.bash-completion e1e460f40668463a8e3e8df9a99de8f9301c9730
+F debian/fossil.docs 45a770a8534b1a439a32546145737975a9217b30
+F debian/fossil.manpages 8ca3a843375393ec37484e4dbae3d4dfe5b4ddcf
+F debian/rules 3f96561b9947280121f72899db3982e18c48e7d1036b0dd74572a25a1b9b0b48 x
+F debian/source/format 1064dc0ce263680c076a1005f35ec906a5cf5a32
+F debian/source/local-options 58a65fc3dfe4bbb8692c99e80334fba1e913f072
+F debian/source/patch-header 84c8aca673f2fc094c29a10bd519fca36a57e9f6
+F debian/tests/control 70e1a35bc70ffe690fcab7997da62bf0329852caf34756c54c71c5b12a5690a2
+F debian/upstream/metadata 39698dc918b09c18be9d915d03dd2b5eb07c9b1ccf0778f8319c212289a030b8
+F debian/watch 05a59eaa16f3b84bcf0cd105c0265d738f6020ab7ddb0562f41820d66f014a20
 F extsrc/cson_amalgamation.c d9432fa22c8b6491cea1874e8c9d7e3e121784bbde217ed71ab02b1bd482649a
 F extsrc/cson_amalgamation.h 3903869fccd066d54ce9716125e5d0fade48bc106b82a3c5f370160dcedc7551
 F extsrc/linenoise-win32.c 4edab5d16a9ba9e1561ba271f35a9f74c86ab5363f402840c7c3a37647fb1a0b
@@ -570,7 +582,7 @@ F src/sync.c d1b08d5c54647991dde2529e199
 F src/tag.c 3bbb805fbc3e6a10a1945f1b9d17ed9d5c69eaa4928341cb33c2d0059ef4bbb1
 F src/tar.c 73a37d3d809c981df005ec7db2e875953854a25d5976fa213cc64be132bcd9a9
 F src/terminal.c f4dafa018410c231529e4549b9494a509420cbc622c1e8c76478561d007bdd76
-F src/th.c 62a84e60d97d56e7a47f6e9029c80b73f2db5d736804846ed40d7c4ab195e60b
+F src/th.c a4a2cf49e37cb1394d16e32ae35c2bdae15a7bdb058871b67343b0394d1f8213
 F src/th.h 549dd1af2f4b241ede68fadbf426a7707ae9657292b7914a20a3c401513b25a0
 F src/th_lang.c c59bbad1fefb0af72cadd3f32f7c8845b339bf8471640d737b0d4499b787589b
 F src/th_main.c 4f43878167d8f716236dc028d072d0b08de7e6eb8c6e9803779fbd4062237a29
@@ -603,7 +615,7 @@ F test/Greek-Lipsum-2.txt e3b3df6e8dd627
 F test/amend.test c1ea044297b09158caa5c800b2017bcf807d0138cc8c8901ba464bcb8798bafb
 F test/clean.test 4ea7e9a6eb25b06a543cec6ece2c21103afb1338
 F test/cmdline.test 19bc9570d2d43264f80111d877fb20e8236dd7346777cc8b9b3b6d5c1d9a0ed2
-F test/commit-warning.test 77c7375437d510e306e55790d1de7e0f9dad8b36749e098716730393cb6f5f56
+F test/commit-warning.test 5a6417e95c35cf8819348a4bbddbd3be2940193b22f51aa769ba6ffe48735faa
 F test/contains-selector.test cf46a39b3c1ff72d2fc674f4ccbeecfb94add7d2
 F test/csp1.html ed027b1032cccad2f2a2bcae4364922ba11f4b5ed648dbe71493c6de9de0ffb6
 F test/delta1.test 201f7f46d5c0d5a7bd7af565e5484d64f5af60a2aa8ce712c7c68c90e8b2ed7e
@@ -616,7 +628,7 @@ F test/fileage-test-1.wiki 50661a791a503
 F test/glob.test 3b2fbff1bd6cc3693251cd4357b482f982620985e57fac614a0134628a2e7209
 F test/graph-test-1.wiki 005464d7086c690588eee46e29f551145178c0eed085f5063f647b0d1231197e
 F test/graph-test-2.md 4dc6143ec96d321846ee7814d762c71d01d76336069074307241bf02ee93546f
-F test/json.test 6328ffc6773d8a1bf26ef471b5913f7237e620abdd35e087c9bfa289e40c5b51
+F test/json.test 4dbfd9bfa35f0e0d7c2e2a6b978d920f8609ae91a220b74c13e72dc55b790e61
 F test/link-tester.html 5eada50c341ab46695478e1ada0c0874ed2422b9a394bcd3993c59ef2b3a66e1
 F test/link-tester.js 5fdd6cd4883bfff4710a883481641d845b483e1e8c97160c5d613cb795c4b6d8
 F test/link-tester.json fd2d90cb473b949708b6a400edac12f15914e5b1bafd9060b4e30bfb43338027
@@ -642,7 +654,7 @@ F test/revert.test abbddaa272ec0ed5e5d9f
 F test/rewrite-test-output.tcl fc2affc10d2ce6911836db498990d72ce5ba6e911cc5036d5f78391c022843ef
 F test/set-manifest.test 0f7a5f05fef7b4a3995ce7384feecde313e542d197c3d2d8c5324ef8177f791c
 F test/settings-repo.test 26de9519938c46bcfbe263a55bbef7e0921b28ac53bcb14dde0b7f18f08fd41f
-F test/settings.test c2a59ad1b2d0fdd61ec9accd84d1f58fb1bf78577e47cec6d79d865655b8cbf3
+F test/settings.test.off c2a59ad1b2d0fdd61ec9accd84d1f58fb1bf78577e47cec6d79d865655b8cbf3 w test/settings.test
 F test/stash.test cc97b53b3e9460505091cf591dc68392a2a379831181914069353488219b6131
 F test/subdir\swith\sspaces/filename\swith\sspaces.txt 4c1f053a9aa422cde7f33113511a70ca3a9f77ddebff4458fbf776752fc3a006
 F test/subdir-b/readme.txt e8e5bf5191c37755b77f68dc971880cacc72ec09
@@ -975,9 +987,9 @@ F www/whyusefossil.wiki 5678210f5e82178b
 F www/wikitheory.wiki 9f664eb4fa24d97afbe2b1375d78069a5ad534c36c40f003bcdf5f428692771d
 F www/wsl_caveats.wiki dc4a8388b29d05641ad4d9769c18cbe49963d000dbdc3a9dd6f616ccbcf12dea
 F www/xkcd-git.gif 1f9bc44ed41cad3f5ac18f21e3463e3390b53b29
-P bd4cec12403c65a43b142fb3dccc784a1b4e38b074fe0e2a5d4b7a76a12c7049
-R 10b884103911ea804e623e9ae13d273f
-T +sym-release *
-T +sym-version-2.27 *
-U drh
-Z 4fb003b0172a7d8decf429d3d6dc17e9
+P 085323cd7ee10c9d5e4cc2eebb4488a725e497dc516001b07079a33f1e33605b
+Q +4619d2efab946460060b538e146ad422b429684a7e493d97ddcc2591763a99a9
+Q +871f6b36e9aa12d926eedb530a3e629275fed87635dddb2bc0d51335e1c46f73
+R ad4f42568356aab8d0ff831ca5ec484c
+U barak
+Z 65fd55f10ef574af14858e16ced3c936
--- fossil-2.27.orig/manifest.uuid
+++ fossil-2.27/manifest.uuid
@@ -1 +1 @@
-99675884a93c09125dbfbef0ca47959626c81545c132e247e67a08bd12ac7256
+fd59a2bcd249b1a681c82507cb6b5b83682fdd8ee9bb4759bca10aad110dac1b
--- fossil-2.27.orig/src/th.c
+++ fossil-2.27/src/th.c
@@ -2907,29 +2907,9 @@ int Th_ToDouble(
 ** the integer iVal and return TH_OK.
 */
 int Th_SetResultInt(Th_Interp *interp, int iVal){
-  int isNegative = 0;
-  unsigned int uVal = iVal;
   char zBuf[32];
-  char *z = &zBuf[32];
-
-  if( iVal<0 ){
-    if( iVal==0x80000000 ){
-      return Th_SetResult(interp, "-2147483648", -1);
-    }
-    isNegative = 1;
-    uVal = iVal * -1;
-  }
-  *(--z) = '\0';
-  *(--z) = (char)(48+(uVal%10));
-  while( (uVal = (uVal/10))>0 ){
-    *(--z) = (char)(48+(uVal%10));
-    assert(z>zBuf);
-  }
-  if( isNegative ){
-    *(--z) = '-';
-  }
-
-  return Th_SetResult(interp, z, -1);
+  snprintf(zBuf, sizeof(zBuf), "%d", iVal);
+  return Th_SetResult(interp, zBuf, -1);
 }
 
 /*
--- fossil-2.27.orig/test/commit-warning.test
+++ fossil-2.27/test/commit-warning.test
@@ -162,144 +162,5 @@ test pre-commit-warnings-1 {[normalize_r
 
 ###############################################################################
 
-# TODO: Change to a collection of test-case crafted files
-#       rather than depend on this list of files that will
-#       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.
-#
-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\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/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\textsrc/pikchr.wasm\tbinary data
-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\tsrc/alerts/bflat2.wav\tbinary data
-1\tsrc/alerts/bflat3.wav\tbinary data
-1\tsrc/alerts/bloop.wav\tbinary data
-1\tsrc/alerts/plunk.wav\tbinary data
-1\tsrc/sounds/0.wav\tbinary data
-1\tsrc/sounds/1.wav\tbinary data
-1\tsrc/sounds/2.wav\tbinary data
-1\tsrc/sounds/3.wav\tbinary data
-1\tsrc/sounds/4.wav\tbinary data
-1\tsrc/sounds/5.wav\tbinary data
-1\tsrc/sounds/6.wav\tbinary data
-1\tsrc/sounds/7.wav\tbinary data
-1\tsrc/sounds/8.wav\tbinary data
-1\tsrc/sounds/9.wav\tbinary data
-1\tsrc/sounds/a.wav\tbinary data
-1\tsrc/sounds/b.wav\tbinary data
-1\tsrc/sounds/c.wav\tbinary data
-1\tsrc/sounds/d.wav\tbinary data
-1\tsrc/sounds/e.wav\tbinary data
-1\tsrc/sounds/f.wav\tbinary data
-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/apple-touch-icon.png\tbinary data
-1\twww/background.jpg\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/copyright-release.pdf\tbinary data
-1\twww/encode1.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/server/windows/cgi-bin-perm.png\tbinary data
-1\twww/server/windows/cgi-exec-perm.png\tbinary data
-1\twww/server/windows/cgi-install-iis.png\tbinary data
-1\twww/server/windows/cgi-script-map.png\tbinary data
-1\twww/xkcd-git.gif\tbinary data
-1}]]}
-}
-
-###############################################################################
 
 test_cleanup
--- fossil-2.27.orig/test/json.test
+++ fossil-2.27/test/json.test
@@ -109,7 +109,7 @@ Host: localhost\r
 User-Agent: Fossil-Test\r
 Cookie: $cookie\r
 Content-Type: application/json
-Content-Length $len
+Content-Length: $len
 \r
 $data}]
   } else {
--- /dev/null
+++ fossil-2.27/test/settings.test.off
@@ -0,0 +1,138 @@
+#
+# Copyright (c) 2016 D. Richard Hipp
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the Simplified BSD License (also
+# known as the "2-Clause License" or "FreeBSD License".)
+#
+# This program is distributed in the hope that it will be useful,
+# but without any warranty; without even the implied warranty of
+# merchantability or fitness for a particular purpose.
+#
+# Author contact information:
+#   drh@hwaci.com
+#   http://www.hwaci.com/drh/
+#
+############################################################################
+#
+# The "settings" and "unset" commands.
+#
+
+set path [file dirname [info script]]; test_setup
+
+###############################################################################
+#
+# Complete syntax as tested:
+#
+#     fossil settings ?PROPERTY? ?VALUE? ?OPTIONS?
+#     fossil unset PROPERTY ?OPTIONS?
+#
+# Where the only supported options are "--global" and "--exact".
+#
+###############################################################################
+#
+# NOTE: The [get_all_settings] procedure from test/tester.tcl returns the list
+#       of settings to test and needs to be manually updated when new settings
+#       are added.
+#
+###############################################################################
+#
+# NOTE: The [extract_setting_names] procedure extracts the list of setting
+#       names from the line-ending normalized output of the "fossil settings"
+#       command.  It assumes that a setting name must begin with a lowercase
+#       letter.  It also assumes that any output lines that start with a
+#       lowercase letter contain a setting name starting at that same point.
+#
+proc extract_setting_names { data } {
+  set names [list]
+
+  foreach {dummy name} [regexp \
+      -all -line -inline -- {^([a-z][a-z0-9\-]*) ?.*$} $data] {
+    lappend names $name
+  }
+
+  return $names
+}
+
+###############################################################################
+
+set all_settings [get_all_settings]
+
+fossil settings
+set local_settings [extract_setting_names [normalize_result_no_trim]]
+
+fossil settings --global
+set global_settings [extract_setting_names [normalize_result_no_trim]]
+
+foreach name $all_settings {
+  test settings-have-local-$name {
+    [lsearch -exact $local_settings $name] != -1
+  }
+
+  test settings-have-global-$name {
+    [lsearch -exact $global_settings $name] != -1
+  }
+}
+
+foreach name $local_settings {
+  test settings-valid-local-$name {
+    [lsearch -exact $all_settings $name] != -1
+  }
+}
+
+foreach name $global_settings {
+  test settings-valid-global-$name {
+    [lsearch -exact $all_settings $name] != -1
+  }
+}
+
+###############################################################################
+
+set pattern(1) {^%name%$}
+set pattern(2) {^%name%[ ]+\((?:local|global)\)[ ]+[^ ]+$}
+
+foreach name $all_settings {
+  fossil settings $name --exact
+  set data [normalize_result]
+
+  test settings-query-local-$name {
+    [regexp -- [string map [list %name% $name] $pattern(1)] $data] ||
+    [regexp -- [string map [list %name% $name] $pattern(2)] $data]
+  }
+
+  if {$name eq "manifest"} {
+    fossil settings $name --exact --global -expectError
+  } else {
+    fossil settings $name --exact --global
+  }
+  set data [normalize_result]
+
+  if {$name eq "manifest"} {
+    test settings-query-global-$name {
+      $data eq "cannot set 'manifest' globally"
+    }
+  } else {
+    test settings-query-global-$name {
+      [regexp -- [string map [list %name% $name] $pattern(1)] $data] ||
+      [regexp -- [string map [list %name% $name] $pattern(2)] $data]
+    }
+  }
+}
+
+###############################################################################
+
+fossil settings bad-setting -expectError
+
+test settings-query-bad-local {
+  [normalize_result] eq "no such setting: bad-setting"
+}
+
+fossil settings bad-setting --global -expectError
+
+test settings-query-bad-global {
+  [normalize_result] eq "no such setting: bad-setting"
+}
+
+###############################################################################
+
+test_cleanup
