[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[lintian] 01/01: Check for copyright years that are later than the last entry added to debian/changelog. (Closes: #807461)



This is an automated email from the git hooks/post-receive script.

lamby pushed a commit to branch master
in repository lintian.

commit 9689d3c64c75162381539826953facc36f263d64
Author: Chris Lamb <lamby@debian.org>
Date:   Wed Jul 19 23:07:48 2017 +0100

    Check for copyright years that are later than the last entry added to debian/changelog. (Closes: #807461)
---
 checks/copyright-file.desc                         |  6 ++++
 checks/copyright-file.pm                           | 26 ++++++++++++-----
 debian/changelog                                   |  2 ++
 .../debian/debian/copyright                        | 34 ++++++++++++++++++++++
 t/tests/copyright-file-year-in-future/desc         |  5 ++++
 t/tests/copyright-file-year-in-future/tags         |  1 +
 6 files changed, 67 insertions(+), 7 deletions(-)

diff --git a/checks/copyright-file.desc b/checks/copyright-file.desc
index fb4bbaa..f2ed0a8 100644
--- a/checks/copyright-file.desc
+++ b/checks/copyright-file.desc
@@ -400,3 +400,9 @@ Info: The copyright file has lines ending in CRLF instead of just LF.
  <tt>CR</tt> character in the file:
  .
  <tt>sed -i 's/\r//g' path/to/file</tt>
+
+Tag: copyright-year-in-future
+Severity: normal
+Certainty: certain
+Info: The copyright file refers to a year that is greater than the last entry
+ in <tt>debian/changelog</tt>. Usually this is a typo.
diff --git a/checks/copyright-file.pm b/checks/copyright-file.pm
index ac371eb..6c4650b 100644
--- a/checks/copyright-file.pm
+++ b/checks/copyright-file.pm
@@ -61,6 +61,13 @@ sub run {
         $found = 1;
     }
 
+    my $latest_year = 0;
+    my $changes = $info->changelog;
+    if (defined $changes) {
+        my ($entry) = $info->changelog->data;
+        $latest_year = (gmtime($entry->{Timestamp}))[5] + 1900;
+    }
+
     if (my $index_info = $info->index("$path/copyright")) {
         $found = 1;
         if ($index_info->is_symlink) {
@@ -328,13 +335,18 @@ qr/GNU (?:Lesser|Library) General Public License|(?-i:\bLGPL\b)/i
     }
     # Other flaws in the copyright phrasing or contents.
 
-    if (
-           $found
-        && !$linked
-        && !/(?:Copyright|Copr\.|\302\251)(?:.*|[\(C\):\s]+)\b\d{4}\b
-               |\bpublic(?:\s+|-)domain\b/xi
-      ) {
-        tag 'copyright-without-copyright-notice';
+    if ($found && !$linked) {
+        my $seen_copyright = 0;
+        while (
+            /(?:Copyright|Copr\.|\302\251)(?:.*|[\(C\):\s]+)\b(\d{4})\b
+               |\bpublic(?:\s+|-)domain\b/xig
+          ) {
+            $seen_copyright = 1;
+            if ($latest_year && $1 > $latest_year) {
+                tag 'copyright-year-in-future', "($1 > $latest_year)";
+            }
+        }
+        tag 'copyright-without-copyright-notice' unless $seen_copyright;
     }
 
     check_spelling($_, $group->info->spelling_exceptions,
diff --git a/debian/changelog b/debian/changelog
index 4f8a470..d707d5b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -21,6 +21,8 @@ lintian (2.5.52) UNRELEASED; urgency=medium
       copyright-contains-automatically-extracted-boilerplate as it can
       be generated by other tools such as dh-make-elpa. Thanks to Sean
       Whitton for the report. (Closes: #841832)
+    + [CL] Check for years that are later than the last entry added to
+      debian/changelog.  (Closes: #807461)
   * checks/cruft.{desc,pm}:
     + [CL] Clarify language of source-contains-prebuilt-ms-help-file
       description; there exists free software to generate .chm files.
diff --git a/t/tests/copyright-file-year-in-future/debian/debian/copyright b/t/tests/copyright-file-year-in-future/debian/debian/copyright
new file mode 100644
index 0000000..fa6dcdf
--- /dev/null
+++ b/t/tests/copyright-file-year-in-future/debian/debian/copyright
@@ -0,0 +1,34 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: lintian
+Upstream-Contact: Lintian Maintainers <debian-lint-maint@lists.debian.org>
+Source: http://git.debian.org/?p=lintian/lintian.git
+
+Files: *
+Copyright: 2199 Always in the Future, Inc. <debian-lint-maint@lists.debian.org>
+License: MIT
+ Copyright (C) 1900 Always in the Past, Inc. <debian-lint-maint@lists.debian.org>
+ .
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ .
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the University nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ SUCH DAMAGE.
diff --git a/t/tests/copyright-file-year-in-future/desc b/t/tests/copyright-file-year-in-future/desc
new file mode 100644
index 0000000..8ac3d20
--- /dev/null
+++ b/t/tests/copyright-file-year-in-future/desc
@@ -0,0 +1,5 @@
+Testname: copyright-file-year-in-future
+Version: 1.0
+Description: Test for "future" years in debian/copyright
+Test-For:
+ copyright-year-in-future
diff --git a/t/tests/copyright-file-year-in-future/tags b/t/tests/copyright-file-year-in-future/tags
new file mode 100644
index 0000000..c1e11c8
--- /dev/null
+++ b/t/tests/copyright-file-year-in-future/tags
@@ -0,0 +1 @@
+W: copyright-file-year-in-future: copyright-year-in-future (2199 > 2017)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git


Reply to: