2 # Test suite for update-copyright.
3 # Copyright (C) 2009-2010 Free Software Foundation, Inc.
4 # This file is part of the GNUlib Library.
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 diffout=`diff -u /dev/null /dev/null 2>&1`
20 if test x"$diffout" = x"" && test $? -eq 0; then
21 compare() { diff -u "$@"; }
23 compare() { cmp "$@"; }
26 # Ensure the update-copyright program gets found.
27 PATH=$abs_aux_dir:$PATH
29 TMP_BASE=update-copyright.test
30 trap 'rm -f $TMP_BASE*' 0 1 2 3 15
32 ## --------------------------------- ##
33 ## Skip if user does not have perl. ##
34 ## --------------------------------- ##
39 eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
40 & eval 'exec perl -wS -0777 -pi "$0" $argv:q'
46 ./$s $TMP-in 2>/dev/null && test b = "`cat $TMP-in 2>/dev/null`" ||
48 printf '%s\n' "$0: skipping this test;" \
49 'your system has insufficient support for Perl' 1>&2
53 # Skip this test if Perl is too old. FIXME: 5.8.0 is just a guess.
54 # We have a report that 5.6.1 is inadequate and that 5.8.0 works.
55 perl -e 'require 5.8.0' || {
56 echo '$0: skipping this test; Perl version is too old' 1>&2
60 # Do not let a different envvar setting perturb results.
61 UPDATE_COPYRIGHT_MAX_LINE_LENGTH=72
62 export UPDATE_COPYRIGHT_MAX_LINE_LENGTH
64 ## ----------------------------- ##
65 ## Examples from documentation. ##
66 ## ----------------------------- ##
70 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
74 # Copyright (C) 1990-2005, 2007-2009 Free Software
79 * Copyright © 90,2005,2007-2009
80 * Free Software Foundation, Inc.
84 ## Copyright (C) 1990-2005, 2007-2009 Free Software
88 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
91 ## Copyright (C) 1990-2005, 2007-2009 Free Software
94 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
98 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
100 # Copyright (C) 1990-2005, 2007-2009 Free Software
105 UPDATE_COPYRIGHT_YEAR=2009 \
106 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
107 compare /dev/null $TMP-stdout || exit 1
108 compare - $TMP-stderr <<EOF || exit 1
109 $TMP.4: warning: FSF copyright statement not found
110 $TMP.5: warning: FSF copyright statement not found
112 compare - $TMP.1 <<EOF || exit 1
113 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
116 compare - $TMP.2 <<EOF || exit 1
117 # Copyright (C) 1990-2005, 2007-2009 Free Software
120 compare - $TMP.3 <<EOF || exit 1
122 * Copyright © 90,2005,2007-2009
123 * Free Software Foundation, Inc.
126 compare - $TMP.4 <<EOF || exit 1
127 ## Copyright (C) 1990-2005, 2007-2009 Free Software
130 compare - $TMP.5 <<EOF || exit 1
131 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
133 compare - $TMP.6 <<EOF || exit 1
134 ## Copyright (C) 1990-2005, 2007-2009 Free Software
137 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
140 compare - $TMP.7 <<EOF || exit 1
141 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
143 # Copyright (C) 1990-2005, 2007-2009 Free Software
148 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
149 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
150 compare /dev/null $TMP-stdout || exit 1
151 compare - $TMP-stderr <<EOF || exit 1
152 $TMP.4: warning: FSF copyright statement not found
153 $TMP.5: warning: FSF copyright statement not found
155 compare - $TMP.1 <<EOF || exit 1
156 Copyright @copyright{} 1990-2005, 2007-2010 Free Software Foundation,
159 compare - $TMP.2 <<EOF || exit 1
160 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
162 compare - $TMP.3 <<EOF || exit 1
164 * Copyright © 1990, 2005, 2007-2010 Free Software Foundation, Inc.
167 compare - $TMP.4 <<EOF || exit 1
168 ## Copyright (C) 1990-2005, 2007-2009 Free Software
171 compare - $TMP.5 <<EOF || exit 1
172 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
174 compare - $TMP.6 <<EOF || exit 1
175 ## Copyright (C) 1990-2005, 2007-2009 Free Software
178 Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
180 compare - $TMP.7 <<EOF || exit 1
181 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
183 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
187 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_FORCE=1 \
188 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
189 compare /dev/null $TMP-stdout || exit 1
190 compare - $TMP-stderr <<EOF || exit 1
191 $TMP.4: warning: FSF copyright statement not found
192 $TMP.5: warning: FSF copyright statement not found
194 compare - $TMP.1 <<EOF || exit 1
195 Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
196 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
197 Free Software Foundation, Inc.
199 compare - $TMP.2 <<EOF || exit 1
200 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
201 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
202 # Software Foundation, Inc.
204 compare - $TMP.3 <<EOF || exit 1
206 * Copyright © 1990, 2005, 2007, 2008, 2009, 2010 Free Software
210 compare - $TMP.4 <<EOF || exit 1
211 ## Copyright (C) 1990-2005, 2007-2009 Free Software
214 compare - $TMP.5 <<EOF || exit 1
215 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
217 compare - $TMP.6 <<EOF || exit 1
218 ## Copyright (C) 1990-2005, 2007-2009 Free Software
221 Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
222 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
223 Software Foundation, Inc.
225 compare - $TMP.7 <<EOF || exit 1
226 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
228 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
229 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
230 # Software Foundation, Inc.
239 TMP=$TMP_BASE-current-year
242 '\" Copyright (C) 2006
243 '\" Free Software Foundation,
246 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
247 compare /dev/null $TMP-stdout || exit 1
248 compare /dev/null $TMP-stderr || exit 1
249 compare - $TMP <<EOF || exit 1
250 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
252 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
253 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
254 compare /dev/null $TMP-stdout || exit 1
255 compare /dev/null $TMP-stderr || exit 1
256 compare - $TMP <<EOF || exit 1
257 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
261 ## ------------------ ##
262 ## Surrounding text. ##
263 ## ------------------ ##
265 TMP=$TMP_BASE-surrounding-text
268 dnl Undisturbed text.
270 dnl Free Software Foundation, Inc.
271 dnl Undisturbed text.
273 UPDATE_COPYRIGHT_YEAR=2010 \
274 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
275 compare /dev/null $TMP-stdout || exit 1
276 compare /dev/null $TMP-stderr || exit 1
277 compare - $TMP <<EOF || exit 1
279 dnl Undisturbed text.
280 dnl Copyright (C) 1989, 2010 Free Software Foundation, Inc.
281 dnl Undisturbed text.
285 ## --------------- ##
287 ## --------------- ##
289 TMP=$TMP_BASE-widest-prefix
291 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
292 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
293 #### 2008 Free Software Foundation, Inc.
295 UPDATE_COPYRIGHT_YEAR=2010 \
296 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
297 compare /dev/null $TMP-stdout || exit 1
298 compare /dev/null $TMP-stderr || exit 1
299 compare - $TMP <<EOF || exit 1
300 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
301 #### 1985, 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
302 #### 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
304 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
305 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
306 compare /dev/null $TMP-stdout || exit 1
307 compare /dev/null $TMP-stderr || exit 1
308 compare - $TMP <<EOF || exit 1
309 #### Copyright (C) 1976-1988, 1999-2008, 2010-2011 Free Software
310 #### Foundation, Inc.
314 ## ------------------- ##
315 ## Prefix too large. ##
316 ## ------------------- ##
318 TMP=$TMP_BASE-prefix-too-large
320 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
321 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
322 #### 2008 Free Software Foundation, Inc.
324 UPDATE_COPYRIGHT_YEAR=2010 \
325 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
326 compare /dev/null $TMP-stdout || exit 1
327 compare - $TMP-stderr <<EOF || exit 1
328 $TMP: warning: FSF copyright statement not found
330 compare - $TMP <<EOF || exit 1
331 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
332 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
333 #### 2008 Free Software Foundation, Inc.
341 TMP=$TMP_BASE-blank-lines
343 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
345 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
346 #2008 Free Software Foundation, Inc.
348 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
350 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
351 2008 Free Software Foundation, Inc.
353 UPDATE_COPYRIGHT_YEAR=2010 \
354 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
355 compare /dev/null $TMP-stdout || exit 1
356 compare - $TMP-stderr <<EOF || exit 1
357 $TMP: warning: FSF copyright statement not found
359 compare - $TMP <<EOF || exit 1
360 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
362 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
363 #2008 Free Software Foundation, Inc.
365 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
367 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
368 2008 Free Software Foundation, Inc.
376 TMP=$TMP_BASE-leading-tabs
378 Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
379 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
380 Software Foundation, Inc.
382 UPDATE_COPYRIGHT_YEAR=2010 \
383 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
384 compare /dev/null $TMP-stdout || exit 1
385 compare /dev/null $TMP-stderr || exit 1
386 compare - $TMP <<EOF || exit 1
387 Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
388 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
389 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
391 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
392 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
393 compare /dev/null $TMP-stdout || exit 1
394 compare /dev/null $TMP-stderr || exit 1
395 compare - $TMP <<EOF || exit 1
396 Copyright (C) 1987-1988, 1991-2011 Free Software Foundation,
401 ## -------------------- ##
402 ## Unusual whitespace. ##
403 ## -------------------- ##
405 TMP=$TMP_BASE-unusual-ws
407 # Copyright (C) 87-88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
408 # 98, 1999, 2000, 2001, 2002, 2003,
\f 2004, 2005, 2006, 2007, 2008,
409 # 2009 Free Software Foundation, Inc.
411 UPDATE_COPYRIGHT_YEAR=2010 \
412 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
413 compare /dev/null $TMP-stdout || exit 1
414 compare /dev/null $TMP-stderr || exit 1
415 compare - $TMP <<EOF || exit 1
416 # Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994,
417 # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
418 # 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
421 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
422 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
423 compare /dev/null $TMP-stdout || exit 1
424 compare /dev/null $TMP-stderr || exit 1
425 compare - $TMP <<EOF || exit 1
426 # Copyright (C) 1987-1988, 1991-2011 Free Software
435 TMP=$TMP_BASE-dos-eol
436 tr @ '\015' > $TMP <<\EOF
437 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
438 Rem 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
439 Rem 2009 Free Software Foundation, Inc.@
441 UPDATE_COPYRIGHT_YEAR=2010 \
442 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
443 compare /dev/null $TMP-stdout || exit 1
444 compare /dev/null $TMP-stderr || exit 1
445 tr @ '\015' > $TMP-exp <<\EOF
446 Rem Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
447 Rem 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
448 Rem 2009, 2010 Free Software Foundation, Inc.@
450 compare $TMP-exp $TMP || exit 1
453 ## --------------- ##
455 ## --------------- ##
457 TMP=$TMP_BASE-omitted-circle-c
459 Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
460 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
461 2009 Free Software Foundation, Inc.
463 UPDATE_COPYRIGHT_YEAR=2010 \
464 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
465 compare /dev/null $TMP-stdout || exit 1
466 compare /dev/null $TMP-stderr || exit 1
467 compare - $TMP <<EOF || exit 1
468 Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
469 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
470 Free Software Foundation, Inc.
474 ## ------------------ ##
475 ## C-style comments. ##
476 ## ------------------ ##
478 TMP=$TMP_BASE-c-style-comments
479 cat > $TMP.star <<EOF
480 /* Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
481 * 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
482 * 2009 Free Software Foundation, Inc. */
484 cat > $TMP.space <<EOF
485 /*Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
486 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
487 2009 Free Software Foundation, Inc. */
489 cat > $TMP.single-line <<EOF
490 /* Copyright 87, 1991, 1992 Free Software Foundation, Inc. */
492 cat > $TMP.single-line-wrapped <<EOF
493 /* Copyright 1988, 1991, 1992, 1993 Free Software Foundation, Inc. */
495 cat > $TMP.extra-text-star <<EOF
496 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. End
499 cat > $TMP.extra-text-space <<EOF
500 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. ***
501 * End of comments. */
503 UPDATE_COPYRIGHT_YEAR=2010 \
504 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
505 compare /dev/null $TMP-stdout || exit 1
506 compare /dev/null $TMP-stderr || exit 1
507 compare - $TMP.star <<EOF || exit 1
508 /* Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
509 * 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
510 * 2009, 2010 Free Software Foundation, Inc. */
512 compare - $TMP.space <<EOF || exit 1
513 /*Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
514 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
515 2009, 2010 Free Software Foundation, Inc. */
517 compare - $TMP.single-line <<EOF || exit 1
518 /* Copyright 1987, 1991, 1992, 2010 Free Software Foundation, Inc. */
520 compare - $TMP.single-line-wrapped <<EOF || exit 1
521 /* Copyright 1988, 1991, 1992, 1993, 2010 Free Software Foundation,
524 compare - $TMP.extra-text-star <<EOF || exit 1
525 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
529 compare - $TMP.extra-text-space <<EOF || exit 1
530 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
532 * End of comments. */