lumiera_documentation/tests/22config_highlevel.tests
Christian Thaeter f754e1521f Start of a 'wordlist' type for the config subsystem
wordlists are simple not quoted words delimited by semicolon, tab, space or
commas. Some special functions will allow to access each of this words by
index etc.
2008-10-15 16:01:06 +02:00

216 lines
5.2 KiB
Text

TESTING "test configuration system" ./test-config
PLANNED "loading configfile, simple" <<END
END
PLANNED "loading configfile, with includes" <<END
END
PLANNED "env var override" <<END
END
PLANNED "lowlevel get" <<END
END
PLANNED "lowlevel set" <<END
END
PLANNED "saving simple configfile" <<END
END
PLANNED "complex saving user file" <<END
END
TEST "number get, default" number_get test.number.1 '1234567890 # comment' <<END
out: 1234567890
END
export LUMIERA_TEST_NUMBER_1=987654321
TEST "number get, env override" number_get test.number.1 '1234567890 # comment' <<END
out: 987654321
END
export LUMIERA_TEST_NUMBER_1=barf
TEST "number get, type error" number_get_nodefault test.number.1 <<END
out: LUMIERA_ERROR_CONFIG_SYNTAX_VALUE:syntax error in value
END
LUMIERA_TEST_NUMBER_1=NAN
TEST "number get, type error" number_get test.number.1 '1234 # comment' <<END
out: LUMIERA_ERROR_CONFIG_SYNTAX_VALUE:syntax error in value, 0
END
unset LUMIERA_TEST_NUMBER_1
TEST "number get, syntax error" number_get_nodefault test.NUMBER.1 <<END
out: LUMIERA_ERROR_CONFIG_SYNTAX_KEY:syntax error in key
END
TEST "number get, no default, no env" number_get_nodefault test.number.1 <<END
out: LUMIERA_ERROR_CONFIG_NO_ENTRY:no configuration entry
END
TEST "number set" number_set test.number '-123456789012345' <<END
out: '-123456789012345'
END
PLANNED "real get" <<END
END
PLANNED "real set" <<END
END
export LUMIERA_TEST_STRING="teststring"
TEST "string get" string_get test.string default <<END
out: 'teststring'
END
TEST "string get, default" string_get test.doesntexist default <<END
out: 'default'
END
LUMIERA_TEST_STRING=' no leading and trailing blanks '
TEST "string get, chopped" string_get test.string default <<END
out: 'no leading and trailing blanks'
END
LUMIERA_TEST_STRING=' " quoted string with spaces " "ignored" #comment'
TEST "string get, quoted" string_get test.string default <<END
out: ' quoted string with spaces '
END
LUMIERA_TEST_STRING=' "quoted string "" not ignored" #comment'
TEST "string get, quoted, escaped" string_get test.string default <<END
out: 'quoted string " not ignored'
END
unset LUMIERA_TEST_STRING
TEST "string set" string_set test.string 'foo bar' <<END
out: 'foo bar'
END
export LUMIERA_TEST_WORD=' " double quote is just right'
TEST "word get" word_get test.word default <<END
out: '"'
END
unset LUMIERA_TEST_WORD
TEST "word set" word_set test.word 'word foo bar' <<END
out: 'word'
END
PLANNED "bool get" <<END
END
PLANNED "bool set" <<END
END
TEST "create configitem with empty line" configitem_simple_ctor_dtor '' <<END
END
TEST "create configitem with blank line" configitem_simple_ctor_dtor $' \t \t' <<END
END
TEST "create configitem with comment" configitem_simple_ctor_dtor $' #\t comment bla' <<END
END
TEST "create configitem with section" configitem_simple_ctor_dtor $'\t[prefix suffix ] bla' <<END
END
TEST "create configitem with directive" configitem_simple_ctor_dtor $' @include \t\t file \t' <<END
END
TEST "create configitem with configentry" configitem_simple_ctor_dtor $' key \t=\t value' <<END
END
TEST "create configitem with configentry (redirect)" configitem_simple_ctor_dtor $'keya <\t\t keyb ' <<END
END
TEST "check content of configitem with empty line" configitem_simple_content_check $'' << END
END
TEST "check content of configitem with comment" configitem_simple_content_check $'\t #comment bla' << END
out: item->line = ' #comment bla'
END
TEST "check content of configitem with section" configitem_simple_content_check $'[ key.foo suffix.bar ] ' << END
out: item->line = '[ key.foo suffix.bar ] '
out: item->key_size = '7'
out: item->key = 'key.foo suffix.bar ] '
out: item->delim = ' suffix.bar ] '
END
TEST "check content of configitem with directive (without argument)" configitem_simple_content_check $'\t @directive ' << END
out: item->line = ' @directive '
out: item->key_size = '9'
out: item->key = '@directive '
END
TEST "check content of configitem with directive (with argument)" configitem_simple_content_check $'\t @directive \targument' << END
out: item->line = ' @directive argument'
out: item->key_size = '9'
out: item->key = '@directive argument'
out: item->delim = ' argument'
END
TEST "check content of configitem with configentry" configitem_simple_content_check $' \t\t key.foo \t\t=\tbar' << END
out: item->line = ' key.foo = bar'
out: item->key_size = '7'
out: item->key = 'key.foo = bar'
out: item->delim = '= bar'
END
TEST "check content of configitem with configentry (redirect)" configitem_simple_content_check $' \t\t key.foo \t\t<\tkey.bar' << END
out: item->line = ' key.foo < key.bar'
out: item->key_size = '7'
out: item->key = 'key.foo < key.bar'
out: item->delim = '< key.bar'
END
TEST "wordlist get item from empty list should fail" wordlist_get_nth 'foo.bar' '' 0 << END
out: 'NULL'
END
TEST "wordlist get item past end should fail" wordlist_get_nth 'foo.bar' 'baz barf gnarf' 3 << END
out: 'NULL'
END
TEST "wordlist get first item" wordlist_get_nth 'foo.bar' 'baz barf gnarf' 0 << END
out: 'baz'
END
TEST "wordlist get last item" wordlist_get_nth 'foo.bar' 'baz barf; gnarf' 2 << END
out: 'gnarf'
END
TEST "wordlist get middle" wordlist_get_nth 'foo.bar' 'baz barf, gnarf' 1 << END
out: 'barf'
END