vhs-runner.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/env fish
  2. set TEST_DIR tests
  3. set TAPES $TEST_DIR/tapes
  4. set REFERENCES $TEST_DIR/references
  5. set TEMP $TEST_DIR/tmp
  6. function run_test -d "Run VHS test" -a NAME
  7. set NAME_TAPE "$NAME.tape"
  8. set SUCCESS "[+] $NAME: Success"
  9. set FAILURE "[+] $NAME: Failure"
  10. set GEN_DIR $TEMP
  11. set GEN_FILE $GEN_DIR/$NAME.txt
  12. set GEN_FILE_ESCAPE (echo $GEN_FILE | sed "s/\//\\\\\//g")
  13. echo "[*] Testing $NAME..."
  14. cat $TAPES/$NAME_TAPE | sed s/outfile/$GEN_FILE_ESCAPE/ | sed s/-l// | vhs >/dev/null
  15. cmp -s -- $REFERENCES/$NAME.txt $TEMP/$NAME.txt && echo $SUCCESS || echo $FAILURE
  16. end
  17. function gen_test -d "Generate VHS test" -a NAME
  18. set NAME_TAPE "$NAME.tape"
  19. set SUCCESS "[+] $NAME: Success"
  20. set FAILURE "[+] $NAME: Failure"
  21. set GEN_DIR $REFERENCES
  22. set GEN_FILE $GEN_DIR/$NAME.txt
  23. set GEN_FILE_ESCAPE (echo $GEN_FILE | sed "s/\//\\\\\//g")
  24. # The idea behind this is that it makes it easier for users of this system
  25. # to change the reference. They should now only have to delete the old
  26. # reference, and a new one will be generated.
  27. if builtin test -f $GEN_FILE
  28. echo "[*] $GEN_FILE exists, skipping generating it"
  29. return
  30. end
  31. echo "[*] Generating $NAME..."
  32. cat $TAPES/$NAME_TAPE | sed s/outfile/$GEN_FILE_ESCAPE/ | sed s/-l// | vhs >/dev/null
  33. cmp -s -- $REFERENCES/$NAME.txt $TEMP/$NAME.txt && echo $SUCCESS || echo $FAILURE
  34. end
  35. function main
  36. # TODO: automatic reference deletion
  37. for file in $TAPES/*
  38. set filename (basename $file .tape)
  39. gen_test $filename
  40. run_test $filename
  41. end
  42. end
  43. main