vhs-runner.sh 2.1 KB

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