#!/bin/sh TOP_DIR=$(cd $(dirname $0)/.. && pwd) TOP_BUILDDIR="$abs_top_builddir" [ -z "$TOP_BUILDDIR" ] && TOP_BUILDDIR="$TOP_DIR" TOP_SRCDIR="$abs_top_srcdir" [ -z "$TOP_SRCDIR" ] && TOP_SRCDIR="$TOP_DIR" TEST_DIR="$TOP_SRCDIR/tests" export PATH="$TOP_BUILDDIR/src:${PATH}" export AUGEAS_ROOT="$TOP_BUILDDIR/build/test-augtool" export AUGEAS_LENS_LIB="$TOP_SRCDIR/lenses" GSED=sed type gsed >/dev/null 2>&1 && GSED=gsed fail() { [ -z "$failed" ] && echo FAIL failed=yes echo "$@" result=1 } # Without args, run all tests if [ $# -eq 0 ] ; then args="$TEST_DIR/test-augtool/*.sh" else args="$@" fi result=0 for tst in $args; do unset failed printf "%-40s ... " $(basename $tst .sh) # Read in test variables. The variables we understand are # echo - echo augtool commands if set to some value # commands - the commands to send to augtool # lens - the lens to use # file - the file that should be changed # diff - the expected diff # refresh - print diff in a form suitable for cut and paste # into the test file if set to some value unset echo commands lens file diff refresh . $tst # Setup test root from root/ [ -d "$AUGEAS_ROOT" ] && rm -rf "$AUGEAS_ROOT" dest_dir="$AUGEAS_ROOT"$(dirname $file) mkdir -p $dest_dir cp -p "$TEST_DIR"/root/$file $dest_dir [ -n "$echo" ] && echo="-e" commands="set /augeas/load/Test/lens $lens set /augeas/load/Test/incl $file load $commands save quit" echo "$commands" | augtool $echo --nostdinc --noautoload -n || fail "augtool failed" abs_file="$AUGEAS_ROOT$file" if [ ! -f "${abs_file}.augnew" ]; then fail "Expected file $file.augnew" else safe_augeas_root=$(printf "%s\n" "$AUGEAS_ROOT" | sed 's/[][\.*^$(){}?+|/]/\\&/g') act=$(diff -u "$abs_file" "${abs_file}.augnew" \ | $GSED -r -e "s/^ $//;s!^(---|\+\+\+) ${safe_augeas_root}($file(\.augnew)?)(.*)\$!\1 \2!;s/\\t/\\\\t/g") if [ "$act" != "$diff" ] ; then fail "$act" fi fi other_files=$(find "$AUGEAS_ROOT" -name \*.augnew | grep -v "$abs_file.augnew") [ -n "$other_files" ] && fail "Unexpected file(s) $other_files" [ -z "$failed" ] && echo OK done exit $result