summaryrefslogtreecommitdiff
path: root/test/settings-repo.test
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-09-04 09:05:24 +0200
committercashmere <cashmere@autistici.org>2026-09-04 09:05:24 +0200
commit4f49b16079b27d7ce633619e4cddfdf2bffbc952 (patch)
treec296c1e7f3c3e2f6859c6d3a1b1b208779b89679 /test/settings-repo.test
downloadrelic-4f49b16079b27d7ce633619e4cddfdf2bffbc952.tar.gz
initial commitHEADmaster
Diffstat (limited to 'test/settings-repo.test')
-rw-r--r--test/settings-repo.test266
1 files changed, 266 insertions, 0 deletions
diff --git a/test/settings-repo.test b/test/settings-repo.test
new file mode 100644
index 0000000..90c6547
--- /dev/null
+++ b/test/settings-repo.test
@@ -0,0 +1,266 @@
+#
+# 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 that may modify the repository.
+#
+
+set path [file dirname [info script]]
+
+require_no_open_checkout
+
+test_setup
+
+###############################################################################
+#
+# Complete syntax as tested:
+#
+# fossil settings ?PROPERTY? ?VALUE? ?OPTIONS?
+# fossil unset PROPERTY ?OPTIONS?
+#
+# Where the only supported options are "--global" and "--exact".
+#
+###############################################################################
+
+set all_settings [get_all_settings]
+
+foreach name $all_settings {
+ #
+ # HACK: Make 100% sure that there are no non-default setting values
+ # present anywhere.
+ #
+ if {$name eq "manifest"} {
+ fossil unset $name --exact --global -expectError
+ } else {
+ fossil unset $name --exact --global
+ }
+ fossil unset $name --exact
+
+ #
+ # NOTE: Query for the hard-coded default value of this setting and
+ # save it.
+ #
+ fossil test-th-eval "setting $name"
+ set defaults($name) [normalize_result]
+}
+
+###############################################################################
+
+fossil settings bad-setting some_value -expectError
+
+test settings-set-bad-local {
+ [normalize_result] eq "no such setting: bad-setting"
+}
+
+fossil settings bad-setting some_value --global -expectError
+
+test settings-set-bad-global {
+ [normalize_result] eq "no such setting: bad-setting"
+}
+
+###############################################################################
+
+fossil unset bad-setting -expectError
+
+test settings-unset-bad-local {
+ [normalize_result] eq "no such setting: bad-setting"
+}
+
+fossil unset bad-setting --global -expectError
+
+test settings-unset-bad-global {
+ [normalize_result] eq "no such setting: bad-setting"
+}
+
+###############################################################################
+
+fossil settings ssl some_value -expectError
+
+test settings-set-ambiguous-local {
+ [normalize_result] eq
+ "ambiguous setting \"ssl\" - might be: ssl-ca-location ssl-identity"
+}
+
+fossil settings ssl some_value --global -expectError
+
+test settings-set-ambiguous-global {
+ [normalize_result] eq
+ "ambiguous setting \"ssl\" - might be: ssl-ca-location ssl-identity"
+}
+
+###############################################################################
+
+fossil unset ssl -expectError
+
+test settings-unset-ambiguous-local {
+ [normalize_result] eq
+ "ambiguous setting \"ssl\" - might be: ssl-ca-location ssl-identity"
+}
+
+fossil unset ssl --global -expectError
+
+test settings-unset-ambiguous-global {
+ [normalize_result] eq
+ "ambiguous setting \"ssl\" - might be: ssl-ca-location ssl-identity"
+}
+
+###############################################################################
+
+set pattern(1) {^%name%$}
+set pattern(3) {^%name%[ ]+\(global\)[ ]+%value%+$}
+set pattern(4) {^%name%[ ]+\(local\)[ ]+%value%+$}
+
+foreach name $all_settings {
+ if {$name ne "manifest"} {
+ set value #global_for_$name
+ fossil settings $name $value --exact --global
+ set data [normalize_result]
+
+ test settings-set-$name-global {
+ $data eq ""
+ }
+
+ fossil settings $name --exact --global
+ set data [normalize_result]
+
+ test settings-set-check1-$name-global {
+ [regexp -- [string map \
+ [list %name% $name %value% $value] $pattern(3)] $data]
+ }
+
+ fossil test-th-eval --open-config "setting $name"
+ set data [normalize_result]
+
+ test settings-set-check2-$name-global {
+ $data eq $value
+ }
+
+ fossil unset $name --exact --global
+ set data [normalize_result]
+
+ test settings-unset-$name-global {
+ $data eq ""
+ }
+
+ fossil settings $name --exact --global
+ set data [normalize_result]
+
+ test settings-unset-check1-$name-global {
+ [regexp -- [string map \
+ [list %name% $name %value% $value] $pattern(1)] $data]
+ }
+
+ fossil test-th-eval --open-config "setting $name"
+ set data [normalize_result]
+
+ test settings-unset-check2-$name-global {
+ $data eq $defaults($name)
+ }
+ }
+
+ set value #local_for_$name
+ fossil settings $name $value --exact
+ set data [normalize_result]
+
+ test settings-set-$name-local {
+ $data eq ""
+ }
+
+ fossil settings $name --exact
+ set data [normalize_result]
+
+ test settings-set-check1-$name-local {
+ [regexp -- [string map \
+ [list %name% $name %value% $value] $pattern(4)] $data]
+ }
+
+ fossil test-th-eval --open-config "setting $name"
+ set data [normalize_result]
+
+ test settings-set-check2-$name-local {
+ $data eq $value
+ }
+
+ fossil unset $name --exact
+ set data [normalize_result]
+
+ test settings-unset-$name-local {
+ $data eq ""
+ }
+
+ fossil settings $name --exact
+ set data [normalize_result]
+
+ test settings-unset-check1-$name-local {
+ [regexp -- [string map \
+ [list %name% $name %value% $value] $pattern(1)] $data]
+ }
+
+ fossil test-th-eval --open-config "setting $name"
+ set data [normalize_result]
+
+ test settings-unset-check2-$name-local {
+ $data eq $defaults($name)
+ }
+}
+
+###############################################################################
+
+set pattern(5) \
+ {^%name%[ ]+\n \(overridden by contents of file \.fossil-settings/%name%\)$}
+
+set versionable_settings [get_versionable_settings]
+file mkdir .fossil-settings
+
+foreach name $versionable_settings {
+ fossil settings $name --exact
+ set data [normalize_result]
+
+ test settings-before-versionable-$name {
+ [regexp -- [string map [list %name% $name] $pattern(1)] $data]
+ }
+
+ set value #versionable_for_$name
+ set fileName [file join .fossil-settings $name]
+ write_file $fileName $value
+
+ fossil settings $name --exact
+ set data [normalize_result]
+
+ test settings-set-check1-versionable-$name {
+ [regexp -- [string map [list %name% $name] $pattern(5)] $data]
+ }
+
+ fossil test-th-eval --open-config "setting $name"
+ set data [normalize_result]
+
+ test settings-set-check2-versionable-$name {
+ $data eq ""
+ }
+
+ file delete $fileName
+
+ fossil settings $name --exact
+ set data [normalize_result]
+
+ test settings-after-versionable-$name {
+ [regexp -- [string map [list %name% $name] $pattern(1)] $data]
+ }
+}
+
+###############################################################################
+
+test_cleanup