# Run tests test: ./bin/program1 | diff - ./tests/expected_output1.json ./bin/program2 | diff - ./tests/expected_output2.json # Update test expected output update_tests: ./bin/program1 > ./tests/expected_output1.json ./bin/program2 > ./tests/expected_output2.json One everything runs the way you want it to, run `make update_tests` to save your expected output and commit that to your repo. If the nature of your tests ever changes, run that part again and commit it to the repo. Once the expected output is it place, `make test` should pass or fail depending on whether the programs are currently giving exactly the output they were expected too or not.