2ac8b3f3c2
* iniset() bails if no section or option (attribute) is supplied * merge_config_file() properly skips lines with only whitespace * Also split the ini-tests into their own script Bug 1257954 Change-Id: Ie31c5bd0df8dfed129fbcf1e37228aaf25e9305d
196 lines
4.3 KiB
Bash
Executable File
196 lines
4.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Tests for DevStack meta-config functions
|
|
|
|
TOP=$(cd $(dirname "$0")/.. && pwd)
|
|
|
|
# Import common functions
|
|
source $TOP/functions
|
|
|
|
# Import config functions
|
|
source $TOP/lib/config
|
|
|
|
# check_result() tests and reports the result values
|
|
# check_result "actual" "expected"
|
|
function check_result() {
|
|
local actual=$1
|
|
local expected=$2
|
|
if [[ "$actual" == "$expected" ]]; then
|
|
echo "OK"
|
|
else
|
|
echo -e "failed: $actual != $expected\n"
|
|
fi
|
|
}
|
|
|
|
TEST_1C_ADD="[eee]
|
|
type=new
|
|
multi = foo2"
|
|
|
|
function create_test1c() {
|
|
cat >test1c.conf <<EOF
|
|
[eee]
|
|
# original comment
|
|
type=original
|
|
EOF
|
|
}
|
|
|
|
function create_test2a() {
|
|
cat >test2a.conf <<EOF
|
|
[ddd]
|
|
# original comment
|
|
type=original
|
|
EOF
|
|
}
|
|
|
|
cat >test.conf <<EOF
|
|
[[test1|test1a.conf]]
|
|
[default]
|
|
# comment an option
|
|
#log_file=./log.conf
|
|
log_file=/etc/log.conf
|
|
handlers=do not disturb
|
|
|
|
[aaa]
|
|
# the commented option should not change
|
|
#handlers=cc,dd
|
|
handlers = aa, bb
|
|
|
|
[[test1|test1b.conf]]
|
|
[bbb]
|
|
handlers=ee,ff
|
|
|
|
[ ccc ]
|
|
spaces = yes
|
|
|
|
[[test2|test2a.conf]]
|
|
[ddd]
|
|
# new comment
|
|
type=new
|
|
additional=true
|
|
|
|
[[test1|test1c.conf]]
|
|
$TEST_1C_ADD
|
|
|
|
[[test3|test-space.conf]]
|
|
[DEFAULT]
|
|
attribute=value
|
|
|
|
# the above line has a single space
|
|
EOF
|
|
|
|
|
|
echo -n "get_meta_section_files: test0 doesn't exist: "
|
|
VAL=$(get_meta_section_files test.conf test0)
|
|
check_result "$VAL" ""
|
|
|
|
echo -n "get_meta_section_files: test1 3 files: "
|
|
VAL=$(get_meta_section_files test.conf test1)
|
|
EXPECT_VAL="test1a.conf
|
|
test1b.conf
|
|
test1c.conf"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "get_meta_section_files: test2 1 file: "
|
|
VAL=$(get_meta_section_files test.conf test2)
|
|
EXPECT_VAL="test2a.conf"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
|
|
# Get a section from a group that doesn't exist
|
|
echo -n "get_meta_section: test0 doesn't exist: "
|
|
VAL=$(get_meta_section test.conf test0 test0.conf)
|
|
check_result "$VAL" ""
|
|
|
|
# Get a single section from a group with multiple files
|
|
echo -n "get_meta_section: test1c single section: "
|
|
VAL=$(get_meta_section test.conf test1 test1c.conf)
|
|
check_result "$VAL" "$TEST_1C_ADD"
|
|
|
|
# Get a single section from a group with a single file
|
|
echo -n "get_meta_section: test2a single section: "
|
|
VAL=$(get_meta_section test.conf test2 test2a.conf)
|
|
EXPECT_VAL="[ddd]
|
|
# new comment
|
|
type=new
|
|
additional=true"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
# Get a single section that doesn't exist from a group
|
|
echo -n "get_meta_section: test2z.conf not in test2: "
|
|
VAL=$(get_meta_section test.conf test2 test2z.conf)
|
|
check_result "$VAL" ""
|
|
|
|
# Get a section from a conf file that doesn't exist
|
|
echo -n "get_meta_section: nofile doesn't exist: "
|
|
VAL=$(get_meta_section nofile.ini test1)
|
|
check_result "$VAL" ""
|
|
|
|
echo -n "get_meta_section: nofile doesn't exist: "
|
|
VAL=$(get_meta_section nofile.ini test0 test0.conf)
|
|
check_result "$VAL" ""
|
|
|
|
echo -n "merge_config_file test1c exists: "
|
|
create_test1c
|
|
merge_config_file test.conf test1 test1c.conf
|
|
VAL=$(cat test1c.conf)
|
|
# iniset adds values immediately under the section header
|
|
EXPECT_VAL="[eee]
|
|
multi = foo2
|
|
# original comment
|
|
type=new"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "merge_config_file test2a exists: "
|
|
create_test2a
|
|
merge_config_file test.conf test2 test2a.conf
|
|
VAL=$(cat test2a.conf)
|
|
# iniset adds values immediately under the section header
|
|
EXPECT_VAL="[ddd]
|
|
additional = true
|
|
# original comment
|
|
type=new"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "merge_config_file test2a not exist: "
|
|
rm test2a.conf
|
|
merge_config_file test.conf test2 test2a.conf
|
|
VAL=$(cat test2a.conf)
|
|
# iniset adds a blank line if it creates the file...
|
|
EXPECT_VAL="
|
|
[ddd]
|
|
additional = true
|
|
type = new"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "merge_config_group test2: "
|
|
rm test2a.conf
|
|
merge_config_group test.conf test2
|
|
VAL=$(cat test2a.conf)
|
|
# iniset adds a blank line if it creates the file...
|
|
EXPECT_VAL="
|
|
[ddd]
|
|
additional = true
|
|
type = new"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
echo -n "merge_config_group test2 no conf file: "
|
|
rm test2a.conf
|
|
merge_config_group x-test.conf test2
|
|
if [[ ! -r test2a.conf ]]; then
|
|
echo "OK"
|
|
else
|
|
echo "failed: $VAL != $EXPECT_VAL"
|
|
fi
|
|
|
|
echo -n "merge_config_file test-space: "
|
|
rm -f test-space.conf
|
|
merge_config_file test.conf test3 test-space.conf
|
|
VAL=$(cat test-space.conf)
|
|
# iniset adds a blank line if it creates the file...
|
|
EXPECT_VAL="
|
|
[DEFAULT]
|
|
attribute = value"
|
|
check_result "$VAL" "$EXPECT_VAL"
|
|
|
|
rm -f test.conf test1c.conf test2a.conf test-space.conf
|