| #!/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 |