diff options
| author | cashmere <cashmere@autistici.org> | 2026-09-04 09:05:24 +0200 |
|---|---|---|
| committer | cashmere <cashmere@autistici.org> | 2026-09-04 09:05:24 +0200 |
| commit | 4f49b16079b27d7ce633619e4cddfdf2bffbc952 (patch) | |
| tree | c296c1e7f3c3e2f6859c6d3a1b1b208779b89679 /test/settings.test.off | |
| download | relic-master.tar.gz | |
Diffstat (limited to 'test/settings.test.off')
| -rw-r--r-- | test/settings.test.off | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/test/settings.test.off b/test/settings.test.off new file mode 100644 index 0000000..bc8a97c --- /dev/null +++ b/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 |
