1
0

vhs-runner.sh 2.3 KB

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