647 lines
17 KiB
Plaintext
647 lines
17 KiB
Plaintext
# This testcase is part of GDB, the GNU debugger.
|
|
|
|
# Copyright 2019-2020 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# 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. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Test the set/show commands framework. The test uses the
|
|
# "maintenance test-settings set/show xxx" subcommands to exercise
|
|
# TAB-completion and setting processing.
|
|
|
|
load_lib completion-support.exp
|
|
|
|
standard_testfile .c
|
|
|
|
if {[build_executable "failed to prepare" $testfile $srcfile debug]} {
|
|
return -1
|
|
}
|
|
|
|
clean_restart
|
|
|
|
if { ![readline_is_used] } {
|
|
untested "no tab completion support without readline"
|
|
return -1
|
|
}
|
|
|
|
# Test the show command SHOW_CMD. EXPECTED_RE is the expected output.
|
|
# Also verifies that $_gdb_maint_setting_str produces an equivalent output,
|
|
# matching it with EXPECTED_RE. EXPECTED_RE double quotes are escaped
|
|
# unless EXPECTED_RE_ESCAPED is true, indicating the quotes in EXPECTED_RE
|
|
# are already escaped.
|
|
# The value for the setting corresponding to SHOW_CMD is then reset
|
|
# to RESET_VALUE, then set again to the value given by $_gdb_maint_setting_str
|
|
# and $_gdb_maint_setting. The default value of RESET_VALUE (0) should work for
|
|
# most settings. Note that we do not check that RESET_VALUE differs from
|
|
# the expected value, as we assume different values will be verified.
|
|
# The setting value must still be the one in force before calling show_setting.
|
|
# In other words, this verifies that
|
|
# maint set test-settings <some_setting> $_gdb_maint_setting_str(<some_setting>)
|
|
# maint set test-settings <some_setting> $_gdb_maint_setting(<some_setting>)
|
|
# do not change the setting value.
|
|
# This procedure makes it easier to make the test
|
|
# name/message unique, since we test the "show" commands many times.
|
|
# EXPECTED_RE is made part of the test name.
|
|
proc show_setting {show_cmd expected_re {expected_re_escaped 0} {reset_value 0}} {
|
|
global gdb_prompt
|
|
|
|
with_test_prefix "$show_cmd $expected_re" {
|
|
gdb_test "$show_cmd" $expected_re "show"
|
|
|
|
# Remove the first two words (such as "maint show") to have the
|
|
# setting name to use for $_gdb_maint_setting_str.
|
|
regsub "\[^ \]+ +\[^ \]+ +\(.*\)" $show_cmd "\\1" maint_setting
|
|
if {$expected_re_escaped} {
|
|
set escaped_expected_re $expected_re
|
|
} else {
|
|
regsub -all "\"" $expected_re "\\\\\\\"" escaped_expected_re
|
|
}
|
|
set test "print \$_gdb_maint_setting_str"
|
|
set setting_str_value "xxxYYYxxx"
|
|
gdb_test_multiple "print \$_gdb_maint_setting_str(\"$maint_setting\")" $test {
|
|
-re " = \"\($escaped_expected_re\)\".*$gdb_prompt $" {
|
|
set setting_str_value $expect_out(1,string)
|
|
regsub -all "\\\\" $expect_out(1,string) "" setting_str_value
|
|
pass $test
|
|
}
|
|
}
|
|
|
|
# Change the setting value to RESET_VALUE, set it back to setting_str_value
|
|
# and check we still have the original value.
|
|
gdb_test_no_output "maintenance set $maint_setting $reset_value" "str reset $reset_value"
|
|
gdb_test_no_output "maintenance set $maint_setting $setting_str_value" "str set again"
|
|
gdb_test "$show_cmd" $expected_re "str show after reset+set again"
|
|
|
|
# Same test, but with value captured from $_gdb_maint_setting.
|
|
set test "print \$_gdb_maint_setting"
|
|
set setting_value "xxxYYYxxx"
|
|
gdb_test_multiple "print \$_gdb_maint_setting(\"$maint_setting\")" $test {
|
|
-re " = \"\(.*\)\".*$gdb_prompt $" {
|
|
set setting_value $expect_out(1,string)
|
|
regsub -all "\\\\" $expect_out(1,string) "" setting_value
|
|
pass $test
|
|
}
|
|
-re " = \(.*\)\r\n$gdb_prompt $" {
|
|
set setting_value $expect_out(1,string)
|
|
pass $test
|
|
}
|
|
}
|
|
|
|
gdb_test_no_output "maintenance set $maint_setting $reset_value" "reset $reset_value"
|
|
gdb_test_no_output "maintenance set $maint_setting $setting_value" "set again"
|
|
gdb_test "$show_cmd" $expected_re "show after reset+set again"
|
|
}
|
|
}
|
|
|
|
# Verifies that $_gdb_setting (SETTING) gives a value whose ptype matches EXPECTED.
|
|
proc check_type {setting expected} {
|
|
with_test_prefix "check_type $setting $expected" {
|
|
gdb_test "print \$_gdb_maint_setting(\"$setting\")"
|
|
gdb_test "ptype $" "$expected"
|
|
|
|
# Currently, GDB ptype <internal function> always tells it is type int.
|
|
# ptype should better report an error such as:
|
|
# "No type information for GDB functions"
|
|
# Test 'type int', so as to make it fail if ptype is changed.
|
|
gdb_test "ptype \$_gdb_maint_setting(\"$setting\")" \
|
|
"type = int"
|
|
}
|
|
}
|
|
|
|
# var_Xinteger tests. VARIANT determines which command/variant to
|
|
# exercise.
|
|
proc test-integer {variant} {
|
|
set set_cmd "maint set test-settings $variant"
|
|
set show_cmd "maint show test-settings $variant"
|
|
|
|
# A bogus value.
|
|
gdb_test "$set_cmd bogus" \
|
|
"No symbol table is loaded\\. Use the \"file\" command\\."
|
|
|
|
# Seemingly-valid but not quite valid value.
|
|
gdb_test "$set_cmd 1a" \
|
|
"Invalid number \"1a\"\\."
|
|
|
|
# Valid value followed by garbage.
|
|
gdb_test "$set_cmd 1 1" \
|
|
"A syntax error in expression, near `1'\\."
|
|
|
|
# Valid value followed by garbage.
|
|
gdb_test "$set_cmd 1 x" \
|
|
"A syntax error in expression, near `x'\\."
|
|
|
|
if {$variant == "zuinteger-unlimited"} {
|
|
# -1 means unlimited. Other negative values are rejected. -1
|
|
# -is tested further below, along the "unlimited" tests.
|
|
gdb_test "$set_cmd -2" "only -1 is allowed to set as unlimited"
|
|
check_type "test-settings $variant" "type = int"
|
|
} elseif {$variant == "uinteger" || $variant == "zuinteger"} {
|
|
# Negative values are not accepted.
|
|
gdb_test "$set_cmd -1" "integer -1 out of range"
|
|
gdb_test "$set_cmd -2" "integer -2 out of range"
|
|
check_type "test-settings $variant" "type = unsigned int"
|
|
} else {
|
|
# Negative values are not accepted.
|
|
gdb_test_no_output "$set_cmd -1"
|
|
show_setting "$show_cmd" "-1"
|
|
gdb_test_no_output "$set_cmd -2"
|
|
show_setting "$show_cmd" "-2"
|
|
check_type "test-settings $variant" "type = int"
|
|
}
|
|
|
|
# Regular integer is accepted.
|
|
gdb_test_no_output "$set_cmd 999"
|
|
show_setting "$show_cmd" "999"
|
|
|
|
if {$variant == "zinteger" || $variant == "zuinteger"} {
|
|
# 0 means 0.
|
|
gdb_test_no_output "$set_cmd 0"
|
|
show_setting "$show_cmd" "0"
|
|
} else {
|
|
# Either 0 or -1 mean unlimited. Test both the number and
|
|
# "unlimited". For the latter, test both full name and
|
|
# abbreviations.
|
|
|
|
if {$variant == "zuinteger-unlimited"} {
|
|
gdb_test_no_output "$set_cmd -1"
|
|
} else {
|
|
gdb_test_no_output "$set_cmd 0"
|
|
}
|
|
show_setting "$show_cmd" "unlimited"
|
|
|
|
foreach_with_prefix value {
|
|
"u"
|
|
"un"
|
|
"unl"
|
|
"unli"
|
|
"unlim"
|
|
"unlimi"
|
|
"unlimit"
|
|
"unlimite"
|
|
"unlimited"
|
|
} {
|
|
# Alternate between integer and unlimited, to make sure the
|
|
# setting really took effect.
|
|
gdb_test_no_output "$set_cmd 1"
|
|
show_setting "$show_cmd" "1"
|
|
|
|
gdb_test_no_output "$set_cmd $value"
|
|
show_setting "$show_cmd" "unlimited"
|
|
}
|
|
}
|
|
|
|
if {$variant == "zuinteger"} {
|
|
test_gdb_complete_multiple "maint set test-settings " "zuinteger" "" {
|
|
"zuinteger"
|
|
"zuinteger-unlimited"
|
|
}
|
|
} else {
|
|
test_gdb_complete_unique \
|
|
"$set_cmd" \
|
|
"$set_cmd"
|
|
}
|
|
|
|
if {$variant == "zinteger" || $variant == "zuinteger"} {
|
|
test_gdb_complete_none \
|
|
"$set_cmd " \
|
|
} else {
|
|
test_gdb_complete_unique \
|
|
"$set_cmd " \
|
|
"$set_cmd unlimited"
|
|
}
|
|
|
|
# Check junk after "unlimited".
|
|
gdb_test "$set_cmd unlimitedu" "No symbol table is loaded.*"
|
|
|
|
if {$variant == "zinteger" || $variant == "zuinteger"} {
|
|
gdb_test "$set_cmd unlimited u" "No symbol table is loaded.*"
|
|
gdb_test "$set_cmd unlimited 1" "No symbol table is loaded.*"
|
|
gdb_test "$set_cmd unlimited -1" "No symbol table is loaded.*"
|
|
} else {
|
|
gdb_test "$set_cmd unlimited u" "Junk after \"unlimited\": u"
|
|
gdb_test "$set_cmd unlimited 1" "Junk after \"unlimited\": 1"
|
|
gdb_test "$set_cmd unlimited -1" "Junk after \"unlimited\": -1"
|
|
}
|
|
|
|
test_gdb_complete_none "$set_cmd unlimited "
|
|
test_gdb_complete_none "$set_cmd unlimitedu"
|
|
test_gdb_complete_none "$set_cmd unlimited u"
|
|
test_gdb_complete_none "$set_cmd unlimited 1"
|
|
test_gdb_complete_none "$set_cmd x"
|
|
test_gdb_complete_none "$set_cmd x "
|
|
test_gdb_complete_none "$set_cmd -1"
|
|
test_gdb_complete_none "$set_cmd -1 "
|
|
test_gdb_complete_none "$set_cmd 1 "
|
|
|
|
# Check show command completion.
|
|
if {$variant == "zuinteger"} {
|
|
test_gdb_complete_multiple "maintenance show test-settings " "zuinteger" "" {
|
|
"zuinteger"
|
|
"zuinteger-unlimited"
|
|
}
|
|
} else {
|
|
test_gdb_complete_unique \
|
|
"$show_cmd" \
|
|
"$show_cmd"
|
|
}
|
|
test_gdb_complete_none "$show_cmd "
|
|
}
|
|
|
|
# boolean tests.
|
|
proc_with_prefix test-boolean {} {
|
|
# Use these variables to make sure we don't call the wrong command
|
|
# by mistake.
|
|
set set_cmd "maint set test-settings boolean"
|
|
set show_cmd "maint show test-settings boolean"
|
|
|
|
# A bogus value.
|
|
gdb_test "$set_cmd bogus" \
|
|
"\"on\" or \"off\" expected\\."
|
|
|
|
# Seemingly-valid but not quite valid value.
|
|
gdb_test "$set_cmd on1" \
|
|
"\"on\" or \"off\" expected\\."
|
|
|
|
# Valid value followed by garbage.
|
|
gdb_test "$set_cmd on 1" \
|
|
"\"on\" or \"off\" expected\\."
|
|
|
|
# Unlike auto-bool settings, "-1" is not accepted.
|
|
gdb_test "$set_cmd -1" \
|
|
"\"on\" or \"off\" expected\\."
|
|
|
|
# Nor "auto".
|
|
gdb_test "$set_cmd auto" \
|
|
"\"on\" or \"off\" expected\\."
|
|
|
|
# "o" is ambiguous.
|
|
gdb_test "$set_cmd o" \
|
|
"\"on\" or \"off\" expected\\."
|
|
|
|
# Various valid values. Test both full value names and
|
|
# abbreviations.
|
|
|
|
# Note that unlike with auto-bool, empty value implies "on".
|
|
foreach_with_prefix value {
|
|
""
|
|
"on"
|
|
"1"
|
|
"y"
|
|
"ye"
|
|
"yes"
|
|
"e"
|
|
"en"
|
|
"ena"
|
|
"enab"
|
|
"enabl"
|
|
"enable"
|
|
} {
|
|
gdb_test_no_output "$set_cmd off"
|
|
show_setting "$show_cmd" "off"
|
|
|
|
gdb_test_no_output "$set_cmd $value"
|
|
show_setting "$show_cmd" "on"
|
|
}
|
|
|
|
check_type "test-settings boolean" "type = int"
|
|
|
|
foreach_with_prefix value {
|
|
"of"
|
|
"off"
|
|
"0"
|
|
"n"
|
|
"no"
|
|
"d"
|
|
"di"
|
|
"dis"
|
|
"disa"
|
|
"disab"
|
|
"disabl"
|
|
"disable"
|
|
} {
|
|
gdb_test_no_output "$set_cmd on"
|
|
show_setting "$show_cmd" "on"
|
|
|
|
gdb_test_no_output "$set_cmd $value"
|
|
show_setting "$show_cmd" "off"
|
|
}
|
|
|
|
test_gdb_complete_multiple "$set_cmd " "" "o" {
|
|
"off"
|
|
"on"
|
|
}
|
|
|
|
test_gdb_complete_unique \
|
|
"$set_cmd of" \
|
|
"$set_cmd off"
|
|
|
|
test_gdb_complete_none "$set_cmd x"
|
|
|
|
# Check that the show command doesn't complete anything.
|
|
test_gdb_complete_unique \
|
|
"$show_cmd" \
|
|
"$show_cmd"
|
|
test_gdb_complete_none "$show_cmd "
|
|
}
|
|
|
|
# auto-boolean tests.
|
|
proc_with_prefix test-auto-boolean {} {
|
|
# Use these variables to make sure we don't call the wrong command
|
|
# by mistake.
|
|
set set_cmd "maint set test-settings auto-boolean"
|
|
set show_cmd "maint show test-settings auto-boolean"
|
|
|
|
# A bogus value.
|
|
gdb_test "$set_cmd bogus" \
|
|
"\"on\", \"off\" or \"auto\" expected\\."
|
|
|
|
# Seemingly-valid but not quite valid value.
|
|
gdb_test "$set_cmd on1" \
|
|
"\"on\", \"off\" or \"auto\" expected\\."
|
|
|
|
# Valid value followed by garbage.
|
|
gdb_test "$set_cmd on 1" \
|
|
"\"on\", \"off\" or \"auto\" expected\\."
|
|
|
|
# "o" is ambiguous.
|
|
gdb_test "$set_cmd o" \
|
|
"\"on\", \"off\" or \"auto\" expected\\."
|
|
|
|
# Various valid values. Test both full value names and
|
|
# abbreviations.
|
|
|
|
foreach_with_prefix value {
|
|
"on"
|
|
"1"
|
|
"y"
|
|
"ye"
|
|
"yes"
|
|
"e"
|
|
"en"
|
|
"ena"
|
|
"enab"
|
|
"enabl"
|
|
"enable"
|
|
} {
|
|
gdb_test_no_output "$set_cmd off"
|
|
show_setting "$show_cmd" "off"
|
|
|
|
gdb_test_no_output "$set_cmd $value"
|
|
show_setting "$show_cmd" "on"
|
|
}
|
|
|
|
foreach_with_prefix value {
|
|
"of"
|
|
"off"
|
|
"0"
|
|
"n"
|
|
"no"
|
|
"d"
|
|
"di"
|
|
"dis"
|
|
"disa"
|
|
"disab"
|
|
"disabl"
|
|
"disable"
|
|
} {
|
|
gdb_test_no_output "$set_cmd on"
|
|
show_setting "$show_cmd" "on"
|
|
|
|
gdb_test_no_output "$set_cmd $value"
|
|
show_setting "$show_cmd" "off"
|
|
}
|
|
|
|
foreach_with_prefix value {
|
|
"a"
|
|
"au"
|
|
"aut"
|
|
"auto"
|
|
"-1"
|
|
} {
|
|
gdb_test_no_output "$set_cmd on"
|
|
show_setting "$show_cmd" "on"
|
|
|
|
gdb_test_no_output "$set_cmd $value"
|
|
show_setting "$show_cmd" "auto"
|
|
}
|
|
|
|
check_type "test-settings auto-boolean" "type = int"
|
|
|
|
# "-" is not accepted as abbreviation of "-1".
|
|
gdb_test "$set_cmd -" \
|
|
"\"on\", \"off\" or \"auto\" expected\\."
|
|
|
|
test_gdb_complete_multiple "$set_cmd " "" "" {
|
|
"auto"
|
|
"off"
|
|
"on"
|
|
}
|
|
|
|
test_gdb_complete_unique \
|
|
"$set_cmd of" \
|
|
"$set_cmd off"
|
|
|
|
test_gdb_complete_none "$set_cmd x"
|
|
|
|
# Check that the show command doesn't complete anything.
|
|
test_gdb_complete_unique \
|
|
"$show_cmd" \
|
|
"$show_cmd"
|
|
test_gdb_complete_none "$show_cmd "
|
|
}
|
|
|
|
# Enum option tests.
|
|
proc_with_prefix test-enum {} {
|
|
# Use these variables to make sure we don't call the wrong command
|
|
# by mistake.
|
|
set set_cmd "maint set test-settings enum"
|
|
set show_cmd "maint show test-settings enum"
|
|
|
|
# Missing value.
|
|
gdb_test "$set_cmd" \
|
|
"Requires an argument\\. Valid arguments are xxx, yyy, zzz\\."
|
|
|
|
# A bogus value.
|
|
gdb_test "$set_cmd bogus" \
|
|
"Undefined item: \"bogus\"."
|
|
|
|
# Seemingly-valid but not quite valid value.
|
|
gdb_test "$set_cmd xxx1" \
|
|
"Undefined item: \"xxx1\"."
|
|
|
|
# Valid value followed by garbage.
|
|
gdb_test "$set_cmd xxx 1" \
|
|
"Junk after item \"xxx\": 1"
|
|
# Valid value followed by garbage, with extra spaces.
|
|
gdb_test "$set_cmd xxx 1" \
|
|
"Junk after item \"xxx\": 1"
|
|
# Abbreviated value followed by garbage.
|
|
gdb_test "$set_cmd xx 1" \
|
|
"Junk after item \"xx\": 1"
|
|
|
|
# Various valid values. Test both full value names and
|
|
# abbreviations.
|
|
gdb_test_no_output "$set_cmd x"
|
|
show_setting "$show_cmd" "xxx" 0 "zzz"
|
|
gdb_test_no_output "$set_cmd yy"
|
|
show_setting "$show_cmd" "yyy" 0 "zzz"
|
|
gdb_test_no_output "$set_cmd zzz"
|
|
show_setting "$show_cmd" "zzz" 0 "yyy"
|
|
|
|
check_type "test-settings enum" "type = char \\\[3\\\]"
|
|
|
|
test_gdb_complete_multiple "$set_cmd " "" "" {
|
|
"xxx"
|
|
"yyy"
|
|
"zzz"
|
|
}
|
|
|
|
test_gdb_complete_unique \
|
|
"$set_cmd x" \
|
|
"$set_cmd xxx"
|
|
|
|
test_gdb_complete_none "$set_cmd a"
|
|
|
|
# Check that the show command doesn't complete anything.
|
|
test_gdb_complete_unique \
|
|
"$show_cmd" \
|
|
"$show_cmd"
|
|
test_gdb_complete_none "$show_cmd "
|
|
}
|
|
|
|
# string settings tests.
|
|
proc test-string {variant} {
|
|
global gdb_prompt
|
|
global srcfile binfile
|
|
|
|
# Load symbols for the completion test below.
|
|
clean_restart $binfile
|
|
|
|
# Use these variables to make sure we don't call the wrong command
|
|
# by mistake.
|
|
set set_cmd "maint set test-settings $variant"
|
|
set show_cmd "maint show test-settings $variant"
|
|
|
|
# Checks that gdb doesn't crash if we haven't set the string yet.
|
|
if {$variant != "filename"} {
|
|
gdb_test "$show_cmd" "^$show_cmd\r\n" "$show_cmd: show default"
|
|
} else {
|
|
gdb_test "$show_cmd" "/foo/bar" "$show_cmd: show default"
|
|
}
|
|
|
|
# A string value.
|
|
gdb_test_no_output "$set_cmd hello world"
|
|
show_setting "$show_cmd" "hello world"
|
|
|
|
check_type "test-settings $variant" "type = char \\\[\[1-9\]\[0-9\]*\\\]"
|
|
|
|
# A quoted string value.
|
|
if {$variant == "string"} {
|
|
gdb_test_no_output "$set_cmd \"hello world\""
|
|
show_setting "$show_cmd" "\\\\\"hello world\\\\\"" 1
|
|
} else {
|
|
gdb_test_no_output "$set_cmd \"hello world\""
|
|
show_setting "$show_cmd" "\"hello world\""
|
|
}
|
|
|
|
# Test clearing the string.
|
|
with_test_prefix "clear string" {
|
|
if {$variant == "filename"} {
|
|
gdb_test "$set_cmd" \
|
|
"Argument required \\(filename to set it to\\.\\)\\."
|
|
|
|
# Check the value didn't change.
|
|
show_setting "$show_cmd" "\"hello world\""
|
|
} else {
|
|
gdb_test_no_output "$set_cmd"
|
|
gdb_test "$show_cmd" \
|
|
"^$show_cmd\r\n" "$show_cmd: empty second time"
|
|
}
|
|
}
|
|
|
|
# Test completion.
|
|
if {$variant == "string" || $variant == "string-noescape" } {
|
|
# Make sure GDB doesn't try to complete on symbols, which
|
|
# doesn't make any sense.
|
|
test_gdb_complete_none "$set_cmd "
|
|
} else {
|
|
# Complete on filename.
|
|
|
|
# See comments in gdb.base/completion.exp.
|
|
|
|
# We `cd' to ${srcdir}, and then do the completion relative to
|
|
# the current directory.
|
|
|
|
# ${srcdir} may be a relative path. We want to make sure we
|
|
# end up in the right directory - so make sure we know where
|
|
# it is.
|
|
global srcdir
|
|
set mydir [pwd]
|
|
cd ${srcdir}
|
|
set fullsrcdir [pwd]
|
|
cd ${mydir}
|
|
|
|
gdb_test "cd ${fullsrcdir}" \
|
|
"Working directory [string_to_regexp ${fullsrcdir}].*" \
|
|
"cd to \${srcdir}"
|
|
|
|
set unique_file ../testsuite/gdb.base/comp-dir/subdir/dummy
|
|
|
|
test_gdb_complete_unique \
|
|
"$set_cmd ${unique_file}" \
|
|
"$set_cmd ${unique_file}.txt"
|
|
|
|
test_gdb_complete_none "$set_cmd ${unique_file}.abc"
|
|
}
|
|
|
|
# Check show command completion.
|
|
if {$variant == "string"} {
|
|
test_gdb_complete_multiple "maint show test-settings " "string" "" {
|
|
"string"
|
|
"string-noescape"
|
|
}
|
|
} else {
|
|
test_gdb_complete_unique \
|
|
"$show_cmd" \
|
|
"$show_cmd"
|
|
}
|
|
test_gdb_complete_none "$show_cmd "
|
|
}
|
|
|
|
foreach variant {
|
|
uinteger
|
|
integer
|
|
zinteger
|
|
zuinteger
|
|
zuinteger-unlimited
|
|
} {
|
|
with_test_prefix "test-integer $variant" {
|
|
test-integer $variant
|
|
}
|
|
}
|
|
|
|
test-boolean
|
|
test-auto-boolean
|
|
test-enum
|
|
|
|
foreach variant {
|
|
string
|
|
string-noescape
|
|
optional-filename
|
|
filename
|
|
} {
|
|
with_test_prefix "test-string $variant" {
|
|
test-string $variant
|
|
}
|
|
}
|