diff options
Diffstat (limited to 'test/settings-repo.test')
| -rw-r--r-- | test/settings-repo.test | 266 |
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 |
