serval-dna/tests/config
Andrew Bettison a80da50636 Finish rewriting configuration and logging code
Fix endless recursion if error or debug logged while reading config file
Fix 'config del' logic
Log messages made before log file can be opened are buffered and written
once the file is open
Do not log to file in ANDROID version, just to Android's log system
2012-07-05 14:59:50 +09:30

165 lines
5.2 KiB
Bash
Executable File

#!/bin/bash
# Tests for Serval DNA configuration operations.
#
# Copyright 2012 Paul Gardner-Stephen
#
# 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 2
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
source "${0%/*}/../testframework.sh"
source "${0%/*}/../testdefs.sh"
setup() {
setup_servald
}
doc_GetCreateInstanceDir="Get creates instance directory"
setup_GetCreateInstanceDir() {
setup
assert [ ! -d "$SERVALINSTANCE_PATH" ]
}
test_GetCreateInstanceDir() {
executeOk_servald config get
assert [ -d "$SERVALINSTANCE_PATH" ]
}
doc_SetCreateInstanceDir="Set creates instance directory"
setup_SetCreateInstanceDir() {
setup
assert [ ! -d "$SERVALINSTANCE_PATH" ]
}
test_SetCreateInstanceDir() {
executeOk_servald config set foo bar
assert [ -d "$SERVALINSTANCE_PATH" ]
}
doc_GetNull="Get an unset config item"
test_GetNull() {
executeOk_servald config get foo
assertStdoutLineCount '==' 0
}
doc_SetGet="Set and get a single config item"
test_SetGet() {
executeOk_servald config set foo bar
executeOk_servald config get foo
assertStdoutLineCount '==' 1
assertStdoutGrep --stdout --stderr --matches=1 '^foo=bar$'
}
doc_GetAll="Get all config items"
test_GetAll() {
executeOk_servald config set foo bar
executeOk_servald config set hello world
executeOk_servald config get
assertStdoutLineCount '==' 2
assertStdoutGrep --stdout --matches=1 '^foo=bar$'
assertStdoutGrep --stdout --matches=1 '^hello=world$'
}
doc_SetTwice="Set a single config item twice"
test_SetTwice() {
executeOk_servald config set foo bar
executeOk_servald config get foo
assertStdoutLineCount '==' 1
assertStdoutGrep --stdout --stderr --matches=1 '^foo=bar$'
executeOk_servald config set foo wah
executeOk_servald config get foo
assertStdoutLineCount '==' 1
assertStdoutGrep --stdout --stderr --matches=1 '^foo=wah$'
}
doc_DelNull="Delete an unset config item"
test_DelNull() {
executeOk_servald config del foo
assertStdoutLineCount '==' 0
}
doc_Del="Delete single config item"
test_Del() {
executeOk_servald config set foo bar
executeOk_servald config set hello world
executeOk_servald config get
assertStdoutLineCount '==' 2
executeOk_servald config del foo
executeOk_servald config get
assertStdoutLineCount '==' 1
executeOk_servald config get foo
assertStdoutLineCount '==' 0
}
doc_CaseInsensitive="Config item names are case insensitive"
test_CaseInsensitive() {
executeOk_servald config set foo bar
executeOk_servald config get foo
assertStdoutLineCount '==' 1
assertStdoutGrep --stdout --stderr --matches=1 '^foo=bar$'
executeOk_servald config get Foo
assertStdoutLineCount '==' 1
assertStdoutGrep --stdout --stderr --matches=1 '^Foo=bar$'
executeOk_servald config set FOO wah
executeOk_servald config get foo
assertStdoutLineCount '==' 1
assertStdoutGrep --stdout --stderr --matches=1 '^foo=wah$'
}
doc_DotsInNames="Config item names can have internal dots"
test_DotsInNames() {
executeOk_servald config set foo.bar yes
executeOk_servald config get foo.bar
assertStdoutLineCount '==' 1
assertStdoutGrep --stdout --stderr --matches=1 '^foo\.bar=yes$'
execute $servald config set foo. yes
assertExitStatus '!=' 0
execute $servald config set .foo yes
assertExitStatus '!=' 0
execute $servald config set foo..bar yes
assertExitStatus '!=' 0
executeOk_servald config set foo.x.bar yes
executeOk_servald config get foo.x.bar
assertStdoutLineCount '==' 1
assertStdoutGrep --stdout --stderr --matches=1 '^foo\.x\.bar=yes$'
}
doc_DebugFlags="Debug config options affect verbosity"
test_DebugFlags() {
executeOk_servald echo one two three
assertStderrGrep --matches=0 '\<echo:argv\['
executeOk_servald config set debug.verbose true
executeOk_servald echo one two three
assertStderrGrep --matches=3 '\<echo:argv\['
executeOk_servald config set debug.verbose false
executeOk_servald echo one two three
assertStderrGrep --matches=0 '\<echo:argv\['
}
doc_DebugFlagAll="Debug config options override debug.all"
test_DebugFlagAll() {
executeOk_servald config set debug.all yes
executeOk_servald echo one two three
assertStderrGrep --matches=3 '\<echo:argv\['
executeOk_servald config set debug.verbose false
executeOk_servald echo one two three
assertStderrGrep --matches=0 '\<echo:argv\['
executeOk_servald config set debug.verbose true
executeOk_servald echo one two three
assertStderrGrep --matches=3 '\<echo:argv\['
executeOk_servald config set debug.all off
executeOk_servald echo one two three
assertStderrGrep --matches=3 '\<echo:argv\['
}
runTests "$@"