vhs-runner.sh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 print_msg -a ARG -a OP -a NAME -a MSG
  7. set_color reset
  8. echo -n "[$OP] "
  9. set_color reset
  10. set_color -b $ARG
  11. set_color 000
  12. echo -n "[ $NAME ]:"
  13. set_color reset
  14. echo " $MSG"
  15. set_color reset
  16. end
  17. function run_test -d "Run VHS test" -a NAME
  18. set NAME_TAPE "$NAME.tape"
  19. set SUCCESS (print_msg "0D0" "+" "$NAME" "Success")
  20. set FAILURE (print_msg "D00" "-" "$NAME" "Failure")
  21. set GEN_DIR $TEMP
  22. set GEN_FILE $GEN_DIR/$NAME.txt
  23. set GEN_FILE_ESCAPE (echo $GEN_FILE | sed "s/\//\\\\\//g")
  24. echo "[*] $NAME: Testing..."
  25. print_msg DD0 "*" $NAME "Testing..."
  26. cat $TAPES/$NAME_TAPE | sed s/outfile/$GEN_FILE_ESCAPE/ | sed s/-l// | vhs &>/dev/null
  27. cmp -s -- $REFERENCES/$NAME.txt $TEMP/$NAME.txt && echo $SUCCESS || echo $FAILURE
  28. end
  29. function gen_test -d "Generate VHS test" -a NAME
  30. set NAME_TAPE "$NAME.tape"
  31. set SUCCESS (set_color yellow; echo -n "[+] $NAME:"; set_color reset; echo " Success")
  32. set FAILURE "[+] $NAME: Failure"
  33. set GEN_DIR $REFERENCES
  34. set GEN_FILE $GEN_DIR/$NAME.txt
  35. set GEN_FILE_ESCAPE (echo $GEN_FILE | sed "s/\//\\\\\//g")
  36. # The idea behind this is that it makes it easier for users of this system
  37. # to change the reference. They should now only have to delete the old
  38. # reference, and a new one will be generated.
  39. if builtin test -f $GEN_FILE
  40. echo "[+] $NAME: $GEN_FILE exists, skipping gen"
  41. return
  42. end
  43. echo "[*] $NAME: Testing..."
  44. cat $TAPES/$NAME_TAPE | sed s/outfile/$GEN_FILE_ESCAPE/ | sed s/-l// | vhs &>/dev/null
  45. cmp -s -- $REFERENCES/$NAME.txt $TEMP/$NAME.txt && echo $SUCCESS || echo $FAILURE
  46. end
  47. function main
  48. # TODO: automatic reference deletion
  49. for file in $TAPES/*
  50. set filename (basename $file .tape)
  51. gen_test $filename
  52. run_test $filename
  53. end
  54. end
  55. main