Merge "Provide an error message on bogus config file spec"
This commit is contained in:
commit
73de4a42d9
@ -92,7 +92,7 @@ function merge_config_file {
|
|||||||
local real_configfile
|
local real_configfile
|
||||||
real_configfile=$(eval echo $configfile)
|
real_configfile=$(eval echo $configfile)
|
||||||
if [ ! -f $real_configfile ]; then
|
if [ ! -f $real_configfile ]; then
|
||||||
touch $real_configfile
|
touch $real_configfile || die $LINENO "could not create config file $real_configfile ($configfile)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
get_meta_section $file $matchgroup $configfile | \
|
get_meta_section $file $matchgroup $configfile | \
|
||||||
@ -178,8 +178,18 @@ function merge_config_group {
|
|||||||
local configfile group
|
local configfile group
|
||||||
for group in $matchgroups; do
|
for group in $matchgroups; do
|
||||||
for configfile in $(get_meta_section_files $localfile $group); do
|
for configfile in $(get_meta_section_files $localfile $group); do
|
||||||
if [[ -d $(dirname $(eval "echo $configfile")) ]]; then
|
local realconfigfile
|
||||||
|
local dir
|
||||||
|
|
||||||
|
realconfigfile=$(eval "echo $configfile")
|
||||||
|
if [[ -z $realconfigfile ]]; then
|
||||||
|
die $LINENO "bogus config file specification: $configfile is undefined"
|
||||||
|
fi
|
||||||
|
dir=$(dirname $realconfigfile)
|
||||||
|
if [[ -d $dir ]]; then
|
||||||
merge_config_file $localfile $group $configfile
|
merge_config_file $localfile $group $configfile
|
||||||
|
else
|
||||||
|
die $LINENO "bogus config file specification $configfile ($configfile=$realconfigfile, $dir is not a directory)"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
@ -23,6 +23,12 @@ function check_result {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# mock function-common:die so that it does not
|
||||||
|
# interupt our test script
|
||||||
|
function die {
|
||||||
|
exit -1
|
||||||
|
}
|
||||||
|
|
||||||
TEST_1C_ADD="[eee]
|
TEST_1C_ADD="[eee]
|
||||||
type=new
|
type=new
|
||||||
multi = foo2"
|
multi = foo2"
|
||||||
@ -110,6 +116,15 @@ attr = strip_trailing_space
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
servers=10.11.12.13:80
|
servers=10.11.12.13:80
|
||||||
|
|
||||||
|
[[test8|/permission-denied.conf]]
|
||||||
|
foo=bar
|
||||||
|
|
||||||
|
[[test9|\$UNDEF]]
|
||||||
|
foo=bar
|
||||||
|
|
||||||
|
[[test10|does-not-exist-dir/test.conf]]
|
||||||
|
foo=bar
|
||||||
|
|
||||||
[[test-multi-sections|test-multi-sections.conf]]
|
[[test-multi-sections|test-multi-sections.conf]]
|
||||||
[sec-1]
|
[sec-1]
|
||||||
cfg_item1 = abcd
|
cfg_item1 = abcd
|
||||||
@ -340,6 +355,36 @@ EXPECT_VAL="
|
|||||||
servers = 10.11.12.13:80"
|
servers = 10.11.12.13:80"
|
||||||
check_result "$VAL" "$EXPECT_VAL"
|
check_result "$VAL" "$EXPECT_VAL"
|
||||||
|
|
||||||
|
echo "merge_config_file test8 non-touchable conf file: "
|
||||||
|
set +e
|
||||||
|
# function is expected to fail and exit, running it
|
||||||
|
# in a subprocess to let this script proceed
|
||||||
|
(merge_config_file test.conf test8 /permission-denied.conf)
|
||||||
|
VAL=$?
|
||||||
|
EXPECT_VAL=255
|
||||||
|
check_result "$VAL" "$EXPECT_VAL"
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo -n "merge_config_group test9 undefined conf file: "
|
||||||
|
set +e
|
||||||
|
# function is expected to fail and exit, running it
|
||||||
|
# in a subprocess to let this script proceed
|
||||||
|
(merge_config_group test.conf test9)
|
||||||
|
VAL=$?
|
||||||
|
EXPECT_VAL=255
|
||||||
|
check_result "$VAL" "$EXPECT_VAL"
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo -n "merge_config_group test10 not directory: "
|
||||||
|
set +e
|
||||||
|
# function is expected to fail and exit, running it
|
||||||
|
# in a subprocess to let this script proceed
|
||||||
|
(merge_config_group test.conf test10)
|
||||||
|
VAL=$?
|
||||||
|
EXPECT_VAL=255
|
||||||
|
check_result "$VAL" "$EXPECT_VAL"
|
||||||
|
set -e
|
||||||
|
|
||||||
rm -f test.conf test1c.conf test2a.conf \
|
rm -f test.conf test1c.conf test2a.conf \
|
||||||
test-space.conf test-equals.conf test-strip.conf \
|
test-space.conf test-equals.conf test-strip.conf \
|
||||||
test-colon.conf test-env.conf test-multiline.conf \
|
test-colon.conf test-env.conf test-multiline.conf \
|
||||||
|
Loading…
Reference in New Issue
Block a user