On Sat, 1 Aug 2009, Joel E. Denny wrote: > > No objection on principle, from me. The 'update-copyright' module > > works fine for me in most cases. But it has no testsuite, therefore it > > may surprise us. > > My test suite has mostly been coreutils and bison (plus a few handwritten > tests for quicker testing). I'll be glad to put something more formal > together. I'm a little busy at the moment, and I have to study how gnulib > does testing, but I'll try to post soon.
The following patch adds a test suite. The command I've been using to run it is: ./gnulib-tool --test --with-tests update-copyright However, "./gnulib-tool --help" says --with-tests is meant for --import. Is there a better command to run the test suite? > Also, I posted some major changes to update-copyright here: > > http://lists.gnu.org/archive/html/bug-gnulib/2009-07/msg00135.html I found a bug in that code, which the following patch fixes. >From 1e91305468e96d8eea16a151fc7b63745d66b47b Mon Sep 17 00:00:00 2001 From: Joel E. Denny <jde...@clemson.edu> Date: Mon, 3 Aug 2009 20:05:50 -0400 Subject: [PATCH] update-copyright: fix bug for 2-digit last year and add tests * build-aux/update-copyright: Fix bug. Use UPDATE_COPYRIGHT_YEAR from environment as current year if specified. * modules/update-copyright-tests: New * tests/test-update-copyright.sh: New. --- ChangeLog | 9 ++ build-aux/update-copyright | 20 ++- modules/update-copyright-tests | 12 ++ tests/test-update-copyright.sh | 309 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 342 insertions(+), 8 deletions(-) create mode 100644 modules/update-copyright-tests create mode 100755 tests/test-update-copyright.sh diff --git a/ChangeLog b/ChangeLog index bb70705..56d85e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2009-08-03 Joel E. Denny <jde...@clemson.edu> + + update-copyright: fix bug for 2-digit last year and add tests + * build-aux/update-copyright: Fix bug. + Use UPDATE_COPYRIGHT_YEAR from environment as current year if + specified. + * modules/update-copyright-tests: New + * tests/test-update-copyright.sh: New. + 2009-07-31 Joel E. Denny <jde...@clemson.edu> update-copyright: handle leading tabs in line prefix diff --git a/build-aux/update-copyright b/build-aux/update-copyright index 5b2a465..39071ab 100755 --- a/build-aux/update-copyright +++ b/build-aux/update-copyright @@ -1,7 +1,7 @@ #!/usr/bin/perl -0777 -pi # Update an FSF copyright year list to include the current year. -my $VERSION = '2009-07-31.12:44'; # UTC +my $VERSION = '2009-08-03.23:03'; # UTC # Copyright (C) 2009 Free Software Foundation # @@ -49,7 +49,7 @@ my $VERSION = '2009-07-31.12:44'; # UTC # Copyright (C) 1990-2005, 2007-2009 Free Software Foundation, # Inc. # -# # Copyright (C) 1990-2005, 2007-2009 Free Software +# # Copyright (c) 1990-2005, 2007-2009 Free Software # # Foundation, Inc. # # /* @@ -100,8 +100,11 @@ my $VERSION = '2009-07-31.12:44'; # UTC use strict; use warnings; -my ($sec, $min, $hour, $mday, $month, $year) = localtime (time()); -my $this_year = $year + 1900; +my $this_year = $ENV{UPDATE_COPYRIGHT_YEAR}; +if (!$this_year || $this_year !~ m/^\d\d(\d\d)?$/) { + my ($sec, $min, $hour, $mday, $month, $year) = localtime (time()); + $this_year = $year + 1900; +} my $copyright = 'Copyright \([cC]\)'; my $holder = 'Free Software Foundation, Inc.'; my $prefix_max = 5; @@ -131,9 +134,10 @@ if (defined($old) && /$old/) { my $new = $1; my $sep = $2 ? $2 : ""; - my $last_c_year = $3; + my $last_year = $3; # Handle two-digit year numbers like "98" and "99". + my $last_c_year = $last_year; $last_c_year <= 99 and $last_c_year += 1900; @@ -142,15 +146,15 @@ if (defined($old) && /$old/) # Update the year. if ($sep eq '-' && $last_c_year + 1 == $this_year) { - $new =~ s/$last_c_year/$this_year/; + $new =~ s/$last_year/$this_year/; } elsif ($sep ne '-' && $last_c_year + 1 == $this_year) { - $new =~ s/$last_c_year/$last_c_year-$this_year/; + $new =~ s/$last_year/$last_c_year-$this_year/; } else { - $new =~ s/$last_c_year/$last_c_year, $this_year/; + $new =~ s/$last_year/$last_c_year, $this_year/; } # Normalize all whitespace including newline-prefix sequences. diff --git a/modules/update-copyright-tests b/modules/update-copyright-tests new file mode 100644 index 0000000..5dc8ee1 --- /dev/null +++ b/modules/update-copyright-tests @@ -0,0 +1,12 @@ +Files: +tests/test-update-copyright.sh + +Depends-on: + +configure.ac: +abs_aux_dir=`cd "$ac_aux_dir"; pwd` +AC_SUBST([abs_aux_dir]) + +Makefile.am: +TESTS += test-update-copyright.sh +TESTS_ENVIRONMENT += PATH='$(abs_aux_dir)'$(PATH_SEPARATOR)"$$PATH" diff --git a/tests/test-update-copyright.sh b/tests/test-update-copyright.sh new file mode 100755 index 0000000..511d5ee --- /dev/null +++ b/tests/test-update-copyright.sh @@ -0,0 +1,309 @@ +#!/bin/sh +# Test suite for update-copyright. +# Copyright (C) 2009 Free Software Foundation, Inc. +# This file is part of the GNUlib Library. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +TMP_BASE=update-copyright.test + +## ----------------------------- ## +## Examples from documentation. ## +## ----------------------------- ## + +TMP=$TMP_BASE-ex +cat > $TMP.1 <<EOF +Copyright (C) 1990-2005, 2007-2009 Free Software Foundation, +Inc. +EOF +cat > $TMP.2 <<EOF +# Copyright (c) 1990-2005, 2007-2009 Free Software +# Foundation, Inc. +EOF +cat > $TMP.3 <<EOF +/* + * Copyright (C) 90,2005,2007-2009 Free Software + * Foundation, Inc. + */ +EOF +cat > $TMP.4 <<EOF +/* Copyright (C) 1990-2005, 2007-2009 Free Software + * Foundation, Inc. */ + +Copyright (C) 1990-2005, 2007-2009 Free Software Foundation, +Inc. +EOF +cat > $TMP.5 <<EOF +Copyright (C) 1990-2005, 2007-2009 Acme, Inc. + +# Copyright (C) 1990-2005, 2007-2009 Free Software +# Foundation, Inc. +EOF + +UPDATE_COPYRIGHT_YEAR=2009 \ + update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u - $TMP-stderr <<EOF || exit 1 +$TMP.4: warning: FSF copyright statement not found +$TMP.5: warning: FSF copyright statement not found +EOF +diff -u - $TMP.1 <<EOF || exit 1 +Copyright (C) 1990-2005, 2007-2009 Free Software Foundation, +Inc. +EOF +diff -u - $TMP.2 <<EOF || exit 1 +# Copyright (c) 1990-2005, 2007-2009 Free Software +# Foundation, Inc. +EOF +diff -u - $TMP.3 <<EOF || exit 1 +/* + * Copyright (C) 90,2005,2007-2009 Free Software + * Foundation, Inc. + */ +EOF +diff -u - $TMP.4 <<EOF || exit 1 +/* Copyright (C) 1990-2005, 2007-2009 Free Software + * Foundation, Inc. */ + +Copyright (C) 1990-2005, 2007-2009 Free Software Foundation, +Inc. +EOF +diff -u - $TMP.5 <<EOF || exit 1 +Copyright (C) 1990-2005, 2007-2009 Acme, Inc. + +# Copyright (C) 1990-2005, 2007-2009 Free Software +# Foundation, Inc. +EOF + +UPDATE_COPYRIGHT_YEAR=2010 \ + update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u - $TMP-stderr <<EOF || exit 1 +$TMP.4: warning: FSF copyright statement not found +$TMP.5: warning: FSF copyright statement not found +EOF +diff -u - $TMP.1 <<EOF || exit 1 +Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc. +EOF +diff -u - $TMP.2 <<EOF || exit 1 +# Copyright (c) 1990-2005, 2007-2010 Free Software Foundation, Inc. +EOF +diff -u - $TMP.3 <<EOF || exit 1 +/* + * Copyright (C) 90, 2005, 2007-2010 Free Software Foundation, Inc. + */ +EOF +diff -u - $TMP.4 <<EOF || exit 1 +/* Copyright (C) 1990-2005, 2007-2009 Free Software + * Foundation, Inc. */ + +Copyright (C) 1990-2005, 2007-2009 Free Software Foundation, +Inc. +EOF +diff -u - $TMP.5 <<EOF || exit 1 +Copyright (C) 1990-2005, 2007-2009 Acme, Inc. + +# Copyright (C) 1990-2005, 2007-2009 Free Software +# Foundation, Inc. +EOF + +rm $TMP* + +## -------------- ## +## Current year. ## +## -------------- ## + +TMP=$TMP_BASE-current-year +YEAR=`/usr/bin/perl -e 'print [localtime]->[5] + 1900'`; +cat > $TMP <<EOF +'\" Copyright (C) 2006 +'\" Free Software Foundation, +'\" Inc. +EOF +update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u /dev/null $TMP-stderr || exit 1 +diff -u - $TMP <<EOF || exit 1 +'\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc. +EOF +rm $TMP* + +## ------------------ ## +## Surrounding text. ## +## ------------------ ## + +TMP=$TMP_BASE-surrounding-text +cat > $TMP <<EOF + Undisturbed text. +dnl Undisturbed text. +dnl Copyright (C) 89 +dnl Free Software Foundation, Inc. +dnl Undisturbed text. +EOF +UPDATE_COPYRIGHT_YEAR=2010 \ + update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u /dev/null $TMP-stderr || exit 1 +diff -u - $TMP <<EOF || exit 1 + Undisturbed text. +dnl Undisturbed text. +dnl Copyright (C) 1989, 2010 Free Software Foundation, Inc. +dnl Undisturbed text. +EOF +rm $TMP* + +## --------------- ## +## Widest prefix. ## +## --------------- ## + +TMP=$TMP_BASE-widest-prefix +cat > $TMP <<EOF +#### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, +#### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +#### 2008 Free Software Foundation, Inc. +EOF +UPDATE_COPYRIGHT_YEAR=2010 \ + update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u /dev/null $TMP-stderr || exit 1 +diff -u - $TMP <<EOF || exit 1 +#### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, +#### 1985, 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +#### 2006, 2007, 2008, 2010 Free Software Foundation, Inc. +EOF +rm $TMP* + +## ------------------- ## +## Prefix too large. ## +## ------------------- ## + +TMP=$TMP_BASE-prefix-too-large +cat > $TMP <<EOF +#### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, +#### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +#### 2008 Free Software Foundation, Inc. +EOF +UPDATE_COPYRIGHT_YEAR=2010 \ + update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u - $TMP-stderr <<EOF || exit 1 +$TMP: warning: FSF copyright statement not found +EOF +diff -u - $TMP <<EOF || exit 1 +#### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, +#### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +#### 2008 Free Software Foundation, Inc. +EOF +rm $TMP* + +## ------------- ## +## Blank lines. ## +## ------------- ## + +TMP=$TMP_BASE-blank-lines +cat > $TMP <<EOF +#Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, +# +#1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +#2008 Free Software Foundation, Inc. + +Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, + +1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +2008 Free Software Foundation, Inc. +EOF +UPDATE_COPYRIGHT_YEAR=2010 \ + update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u - $TMP-stderr <<EOF || exit 1 +$TMP: warning: FSF copyright statement not found +EOF +diff -u - $TMP <<EOF || exit 1 +#Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, +# +#1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +#2008 Free Software Foundation, Inc. + +Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, + +1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, +2008 Free Software Foundation, Inc. +EOF +rm $TMP* + +## -------------- ## +## Leading tabs. ## +## -------------- ## + +TMP=$TMP_BASE-leading-tabs +cat > $TMP <<EOF + Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98, + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free + Software Foundation, Inc. +EOF +UPDATE_COPYRIGHT_YEAR=2010 \ + update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u /dev/null $TMP-stderr || exit 1 +diff -u - $TMP <<EOF || exit 1 + Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + 2009-2010 Free Software Foundation, Inc. +EOF +rm $TMP* + +## -------------------- ## +## Unusual whitespace. ## +## -------------------- ## + +TMP=$TMP_BASE-unusual-ws +cat > $TMP <<EOF + # Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + # 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + # 2009 Free Software Foundation, Inc. +EOF +UPDATE_COPYRIGHT_YEAR=2010 \ + update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u /dev/null $TMP-stderr || exit 1 +diff -u - $TMP <<EOF || exit 1 + # Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, + # 1996, 1997, 98, 1999, 2000, 2001, 2002, 2003, 2004, + # 2005, 2006, 2007, 2008, 2009-2010 Free Software + # Foundation, Inc. +EOF +rm $TMP* + +## --------- ## +## DOS EOL. ## +## --------- ## + +TMP=$TMP_BASE-dos-eol +cat > $TMP <<EOF +Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, +Rem 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +Rem 2009 Free Software Foundation, Inc. +EOF +UPDATE_COPYRIGHT_YEAR=2010 \ + update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr +diff -u /dev/null $TMP-stdout || exit 1 +diff -u /dev/null $TMP-stderr || exit 1 +diff -u - $TMP <<EOF || exit 1 +Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98, +Rem 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +Rem 2009-2010 Free Software Foundation, Inc. +EOF +rm $TMP* + +exit 0 -- 1.5.4.3