summaryrefslogtreecommitdiff
path: root/yarns/010-tests.yarn
blob: 72020c0dad5fbabe7b0f9d01dd1849fe589eafbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
% 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"