vhs-runner.sh 2.2 KB

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