% copyright-statement-lint test suite Introduction ============ `copyright-statement-lint` checks source files for copyright statements, and checks that their copyright year matches the latest git commit. As such, this test suite needs to verify several different cases: no copyright statement, wrong year, multiple statements, etc. Also various forms of copyright statements. All of these are fairly simple, however. The test creates a file with a suitable statement, runs the tool against the file, and checks that the output of the tool is as expected. Scenarios ========= Simple case: no copyright file. SCENARIO no copyright file GIVEN an empty file FOOBAR WHEN copyright-statement-lint is run against FOOBAR THEN exit code is 1 AND stderr contains "FOOBAR.*no copyright statement" Implementations =============== File creation ------------- These are all pretty straightforward. Any files are created in `$DATADIR` using names given by the user. IMPLEMENTS GIVEN an empty file (\S+) touch "$DATADIR/$MATCH_1" Running and checking the results of `copyright-statement-lint` -------------------------------------------------------------- We only have this one way of running the tool. We capture stdout, stderr, and the exit code. Note: we do not fail the step even if the tool fails. IMPLEMENTS WHEN copyright-statement-lint is run against (\S+) # Given set -e, we need to use an if to capture non-zero exit # code. Don't want to turn set -e off, so we capture other errors. if "$SRCDIR/copyright-statement-lint" \ --no-default-config "$DATADIR/$MATCH_1" \ > "$DATADIR/stdout" \ 2> "$DATADIR/stderr" then exit=0 else exit=$? fi echo "$exit" > "$DATADIR/exit" Exit code checking. Since we don't fail the running of the tool, every scenario is expected to check the exit code. IMPLEMENTS THEN exit code is (\d+) cat "$DATADIR/exit" grep -Fx "$MATCH_1" "$DATADIR/exit" Check stdout/stderr. IMPLEMENTS THEN (\S+) contains "(.*)" grep "$MATCH_2" "$DATADIR/$MATCH_1"