#!/bin/sh
# Test manipulating the save flags in /augeas/save
root=$abs_top_builddir/build/test-save-mode
hosts=$root/etc/hosts
augopts="--nostdinc -r $root -I $abs_top_srcdir/lenses"
run_augtool() {
exp=$1
shift
augtool $augopts "$@" > /dev/null
status=$?
if [ "x$exp" = ok -a $status -ne 0 ] ; then
echo "augtool failed"
exit 1
elif [ "x$exp" = fail -a $status -eq 0 ] ; then
echo "augtool succeeded but should have failed"
exit 1
fi
}
assert_ipaddr() {
exp="/files/etc/hosts/1/ipaddr = $1"
act=$(augtool $augopts get /files/etc/hosts/1/ipaddr)
if [ "$act" != "$exp" ] ; then
printf "Expected: %s\n" "$exp"
printf "Actual : %s\n" "$act"
exit 1
fi
}
assert_file_exists() {
if [ ! -f "$1" ] ; then
echo "File $1 does not exist, but should"
exit 1
fi
}
assert_file_exists_not() {
if [ -f "$1" ] ; then
echo "File $1 exists, but should not"
exit 1
fi
}
setup() {
# echo $*
rm -rf $root
mkdir -p $(dirname $hosts)
cat > $hosts <<EOF
127.0.0.1 localhost
EOF
}
setup "No /augeas/save"
run_augtool fail <<EOF
set /files/etc/hosts/1/ipaddr 127.0.0.2
rm /augeas/save
save
EOF
assert_ipaddr 127.0.0.1
setup "Invalid /augeas/save"
run_augtool fail <<EOF
set /files/etc/hosts/1/ipaddr 127.0.0.2
set /augeas/save "not a valid flag"
save
EOF
assert_ipaddr 127.0.0.1
setup "noop"
run_augtool fail <<EOF
set /files/etc/hosts/1/ipaddr 127.0.0.2
set /augeas/save noop
save
EOF
assert_ipaddr 127.0.0.1
assert_file_exists_not $hosts.augnew
assert_file_exists_not $hosts.augsave
setup "newfile"
run_augtool ok <<EOF
set /files/etc/hosts/1/ipaddr 127.0.0.2
set /augeas/save newfile
save
EOF
assert_ipaddr 127.0.0.1
assert_file_exists $hosts.augnew
assert_file_exists_not $hosts.augsave
setup "overwrite"
run_augtool ok <<EOF
set /files/etc/hosts/1/ipaddr 127.0.0.2
set /augeas/save overwrite
save
EOF
assert_ipaddr 127.0.0.2
assert_file_exists_not $hosts.augnew
assert_file_exists_not $hosts.augsave
setup "backup"
run_augtool ok <<EOF
set /files/etc/hosts/1/ipaddr 127.0.0.2
set /augeas/save backup
save
EOF
assert_ipaddr 127.0.0.2
assert_file_exists_not $hosts.augnew
assert_file_exists $hosts.augsave
augopts="${augopts} --autosave"
setup "autosave"
run_augtool ok <<EOF
set /files/etc/hosts/1/ipaddr 127.0.0.2
EOF
assert_ipaddr 127.0.0.2
assert_file_exists_not $hosts.augnew
assert_file_exists_not $hosts.augsave
setup "autosave command line"
run_augtool ok set /files/etc/hosts/1/ipaddr 127.0.0.2
assert_ipaddr 127.0.0.2
assert_file_exists_not $hosts.augnew
assert_file_exists_not $hosts.augsave