shell dot on steroids https://pagure.io/shellfu

ffoo 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/bin/bash
  2. enum_tests() {
  3. echo "import_fn"
  4. echo "import_var"
  5. echo "import_var_fn"
  6. echo "import_submodule"
  7. }
  8. ignored() {
  9. echo declare -f ffoo
  10. echo FFOO_DEBUG
  11. echo FFOO_DEBUGINIT
  12. echo FFOO_DIR
  13. echo FFOO_INCLUDE
  14. echo FFOO_MKPRETTY
  15. echo FFOO_VERBOSE
  16. echo FFOO_VERSION
  17. }
  18. do_test() {
  19. local name=$1
  20. echo "(set -o posix; set) | grep -e '^[a-zA-Z_]' | sed -e 's/=.*//' >> $name.before" >> $name.sh
  21. echo "declare -F >> $name.before" >> $name.sh
  22. cat "$name" >> $name.sh
  23. echo "(set -o posix; set) | grep -e '^[a-zA-Z_]' | sed -e 's/=.*//' >> $name.after" >> $name.sh
  24. echo "declare -F >> $name.after" >> $name.sh
  25. sed -i -e "s|\\<ffoom\\>|$ffoom_path|" $name.sh
  26. env -i bash "$name.sh"
  27. comm -13 <(sort "$name.before" | grep -vf _ignored_) <(sort "$name.after" | grep -vf _ignored_) > "$name.diff"
  28. diff -u "$name.diff" "$name.oracle"
  29. }
  30. ffoom_path=$(which ffoom)
  31. tmpdir=$(mktemp -d)
  32. mkdir -p "$tmpdir"
  33. cp -r "test/data/ffoo/"* "$tmpdir"
  34. pushd "$tmpdir"
  35. ignored > _ignored_
  36. for name in $(enum_tests);
  37. do
  38. do_test "$name";
  39. done
  40. popd
  41. rm -rf $tmpdir