diff options
-rwxr-xr-x | copyright-statement-lint | 9 | ||||
-rw-r--r-- | yarns/010-tests.yarn | 140 |
2 files changed, 148 insertions, 1 deletions
diff --git a/copyright-statement-lint b/copyright-statement-lint index db61ded..5ca8033 100755 --- a/copyright-statement-lint +++ b/copyright-statement-lint @@ -32,6 +32,12 @@ copyright_pattern = re.compile( class CopyrightStatementLint(cliapp.Application): + def add_settings(self): + self.settings.integer( + ['debug-commit-year'], + 'pretend the commit is from YEAR', + metavar='YEAR') + def setup(self): self.errors = False @@ -61,6 +67,9 @@ class CopyrightStatementLint(cliapp.Application): self.statements.append(m) def get_commit_year(self, filename): + if self.settings['debug-commit-year']: + return self.settings['debug-commit-year'] + output = cliapp.runcmd(['git', 'log', '-n1', filename]) for line in output.splitlines(): diff --git a/yarns/010-tests.yarn b/yarns/010-tests.yarn index 72020c0..e2ec72d 100644 --- a/yarns/010-tests.yarn +++ b/yarns/010-tests.yarn @@ -16,7 +16,8 @@ the output of the tool is as expected. Scenarios ========= -Simple case: no copyright file. +No copyright file +----------------- SCENARIO no copyright file GIVEN an empty file FOOBAR @@ -24,6 +25,131 @@ Simple case: no copyright file. THEN exit code is 1 AND stderr contains "FOOBAR.*no copyright statement" +Simple copyright statement +-------------------------- + + SCENARIO simple copyright statement + GIVEN a file FOOBAR containing "Copyright 2014 Foo Bar" + + GIVEN commit year is 2013 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2013 not contained" + + GIVEN commit year is 2014 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2015 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2015 not contained" + +Itemised copyright years +------------------------ + + SCENARIO itemised copyright years + GIVEN a file FOOBAR containing "Copyright 1999,2014 Foo Bar" + + GIVEN commit year is 1998 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*1998 not contained" + + GIVEN commit year is 1999 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2000 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2000 not contained" + + GIVEN commit year is 2013 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2013 not contained" + + GIVEN commit year is 2014 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2015 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2015 not contained" + +Range of copyright years +------------------------ + + SCENARIO range of copyright years + GIVEN a file FOOBAR containing "Copyright 1999-2014 Foo Bar" + + GIVEN commit year is 1998 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*1998 not contained" + + GIVEN commit year is 1999 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2000 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2013 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2014 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2015 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2015 not contained" + +Combined itemised and range of copyright years +---------------------------------------------- + + SCENARIO combined itemised and range of copyright years + GIVEN a file FOOBAR containing "Copyright 1999-2000, 2014 Foo Bar" + + GIVEN commit year is 1998 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*1998 not contained" + + GIVEN commit year is 1999 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2000 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2001 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2001 not contained" + + GIVEN commit year is 2013 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2013 not contained" + + GIVEN commit year is 2014 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 0 + + GIVEN commit year is 2015 + WHEN copyright-statement-lint is run against FOOBAR + THEN exit code is 1 + AND stderr contains "FOOBAR.*2015 not contained" + + Implementations =============== @@ -36,6 +162,16 @@ in `$DATADIR` using names given by the user. IMPLEMENTS GIVEN an empty file (\S+) touch "$DATADIR/$MATCH_1" + IMPLEMENTS GIVEN a file (\S+) containing "(.*)" + printf '%s\n' "$MATCH_2" > "$DATADIR/$MATCH_1" + +Pretending what the commit year is +---------------------------------- + + IMPLEMENTS GIVEN commit year is (\d+) + printf '[config]\ndebug-commit-year = %s\n' "$MATCH_1" \ + > "$DATADIR/test.conf" + Running and checking the results of `copyright-statement-lint` -------------------------------------------------------------- @@ -48,6 +184,7 @@ tool fails. # 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" \ + --config "$DATADIR/test.conf" \ > "$DATADIR/stdout" \ 2> "$DATADIR/stderr" then @@ -67,4 +204,5 @@ every scenario is expected to check the exit code. Check stdout/stderr. IMPLEMENTS THEN (\S+) contains "(.*)" + cat "$DATADIR/$MATCH_1" grep "$MATCH_2" "$DATADIR/$MATCH_1" |