#!/bin/bash enum_tests() { echo "import_fn" echo "import_var" echo "import_var_fn" echo "import_submodule" } ignored() { echo declare -f ffoo echo FFOO_DEBUG echo FFOO_DEBUGINIT echo FFOO_DIR echo FFOO_INCLUDE echo FFOO_MKPRETTY echo FFOO_VERBOSE echo FFOO_VERSION } do_test() { local name=$1 echo "(set -o posix; set) | grep -e '^[a-zA-Z_]' | sed -e 's/=.*//' >> $name.before" >> $name.sh echo "declare -F >> $name.before" >> $name.sh cat "$name" >> $name.sh echo "(set -o posix; set) | grep -e '^[a-zA-Z_]' | sed -e 's/=.*//' >> $name.after" >> $name.sh echo "declare -F >> $name.after" >> $name.sh sed -i -e "s|\\|$ffoom_path|" $name.sh env -i bash "$name.sh" comm -13 <(sort "$name.before" | grep -vf _ignored_) <(sort "$name.after" | grep -vf _ignored_) > "$name.diff" diff -u "$name.diff" "$name.oracle" } ffoom_path=$(which ffoom) tmpdir=$(mktemp -d) mkdir -p "$tmpdir" cp -r "test/data/ffoo/"* "$tmpdir" pushd "$tmpdir" ignored > _ignored_ for name in $(enum_tests); do do_test "$name"; done popd rm -rf $tmpdir