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 # Skip this test if Perl is too old. FIXME: 5.6.0 is just a guess.
20 # We have a report that 5.004_05 is inadequate and that 5.8.8 works.
21 perl -e 'require 5.6.0' || exit 77
23 diffout=`diff -u /dev/null /dev/null 2>&1`
24 if test x"$diffout" = x"" && test $? -eq 0; then
25 compare() { diff -u "$@"; }
27 compare() { cmp "$@"; }
30 TMP_BASE=update-copyright.test
31 trap 'rm -f $TMP_BASE*' 0 1 2 3 15
33 ## --------------------------------- ##
34 ## Skip if user does not have perl. ##
35 ## --------------------------------- ##
40 eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
41 & eval 'exec perl -wS -0777 -pi "$0" $argv:q'
47 ./$s $TMP-in 2>/dev/null && test b = "`cat $TMP-in 2>/dev/null`" ||
49 printf '%s\n' "$0: skipping this test;" \
50 'your system has insufficient support for Perl' 1>&2
54 # Do not let a different envvar setting perturb results.
55 UPDATE_COPYRIGHT_MAX_LINE_LENGTH=72
56 export UPDATE_COPYRIGHT_MAX_LINE_LENGTH
58 ## ----------------------------- ##
59 ## Examples from documentation. ##
60 ## ----------------------------- ##
64 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
68 # Copyright (C) 1990-2005, 2007-2009 Free Software
73 * Copyright © 90,2005,2007-2009
74 * Free Software Foundation, Inc.
78 ## Copyright (C) 1990-2005, 2007-2009 Free Software
82 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
85 ## Copyright (C) 1990-2005, 2007-2009 Free Software
88 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
92 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
94 # Copyright (C) 1990-2005, 2007-2009 Free Software
99 UPDATE_COPYRIGHT_YEAR=2009 \
100 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
101 compare /dev/null $TMP-stdout || exit 1
102 compare - $TMP-stderr <<EOF || exit 1
103 $TMP.4: warning: FSF copyright statement not found
104 $TMP.5: warning: FSF copyright statement not found
106 compare - $TMP.1 <<EOF || exit 1
107 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
110 compare - $TMP.2 <<EOF || exit 1
111 # Copyright (C) 1990-2005, 2007-2009 Free Software
114 compare - $TMP.3 <<EOF || exit 1
116 * Copyright © 90,2005,2007-2009
117 * Free Software Foundation, Inc.
120 compare - $TMP.4 <<EOF || exit 1
121 ## Copyright (C) 1990-2005, 2007-2009 Free Software
124 compare - $TMP.5 <<EOF || exit 1
125 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
127 compare - $TMP.6 <<EOF || exit 1
128 ## Copyright (C) 1990-2005, 2007-2009 Free Software
131 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
134 compare - $TMP.7 <<EOF || exit 1
135 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
137 # Copyright (C) 1990-2005, 2007-2009 Free Software
142 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
143 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
144 compare /dev/null $TMP-stdout || exit 1
145 compare - $TMP-stderr <<EOF || exit 1
146 $TMP.4: warning: FSF copyright statement not found
147 $TMP.5: warning: FSF copyright statement not found
149 compare - $TMP.1 <<EOF || exit 1
150 Copyright @copyright{} 1990-2005, 2007-2010 Free Software Foundation,
153 compare - $TMP.2 <<EOF || exit 1
154 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
156 compare - $TMP.3 <<EOF || exit 1
158 * Copyright © 1990, 2005, 2007-2010 Free Software Foundation, Inc.
161 compare - $TMP.4 <<EOF || exit 1
162 ## Copyright (C) 1990-2005, 2007-2009 Free Software
165 compare - $TMP.5 <<EOF || exit 1
166 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
168 compare - $TMP.6 <<EOF || exit 1
169 ## Copyright (C) 1990-2005, 2007-2009 Free Software
172 Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
174 compare - $TMP.7 <<EOF || exit 1
175 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
177 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
181 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_FORCE=1 \
182 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
183 compare /dev/null $TMP-stdout || exit 1
184 compare - $TMP-stderr <<EOF || exit 1
185 $TMP.4: warning: FSF copyright statement not found
186 $TMP.5: warning: FSF copyright statement not found
188 compare - $TMP.1 <<EOF || exit 1
189 Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
190 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
191 Free Software Foundation, Inc.
193 compare - $TMP.2 <<EOF || exit 1
194 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
195 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
196 # Software Foundation, Inc.
198 compare - $TMP.3 <<EOF || exit 1
200 * Copyright © 1990, 2005, 2007, 2008, 2009, 2010 Free Software
204 compare - $TMP.4 <<EOF || exit 1
205 ## Copyright (C) 1990-2005, 2007-2009 Free Software
208 compare - $TMP.5 <<EOF || exit 1
209 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
211 compare - $TMP.6 <<EOF || exit 1
212 ## Copyright (C) 1990-2005, 2007-2009 Free Software
215 Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
216 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
217 Software Foundation, Inc.
219 compare - $TMP.7 <<EOF || exit 1
220 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
222 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
223 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
224 # Software Foundation, Inc.
233 TMP=$TMP_BASE-current-year
236 '\" Copyright (C) 2006
237 '\" Free Software Foundation,
240 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
241 compare /dev/null $TMP-stdout || exit 1
242 compare /dev/null $TMP-stderr || exit 1
243 compare - $TMP <<EOF || exit 1
244 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
246 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
247 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
248 compare /dev/null $TMP-stdout || exit 1
249 compare /dev/null $TMP-stderr || exit 1
250 compare - $TMP <<EOF || exit 1
251 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
255 ## ------------------ ##
256 ## Surrounding text. ##
257 ## ------------------ ##
259 TMP=$TMP_BASE-surrounding-text
262 dnl Undisturbed text.
264 dnl Free Software Foundation, Inc.
265 dnl Undisturbed text.
267 UPDATE_COPYRIGHT_YEAR=2010 \
268 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
269 compare /dev/null $TMP-stdout || exit 1
270 compare /dev/null $TMP-stderr || exit 1
271 compare - $TMP <<EOF || exit 1
273 dnl Undisturbed text.
274 dnl Copyright (C) 1989, 2010 Free Software Foundation, Inc.
275 dnl Undisturbed text.
279 ## --------------- ##
281 ## --------------- ##
283 TMP=$TMP_BASE-widest-prefix
285 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
286 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
287 #### 2008 Free Software Foundation, Inc.
289 UPDATE_COPYRIGHT_YEAR=2010 \
290 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
291 compare /dev/null $TMP-stdout || exit 1
292 compare /dev/null $TMP-stderr || exit 1
293 compare - $TMP <<EOF || exit 1
294 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
295 #### 1985, 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
296 #### 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
298 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
299 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
300 compare /dev/null $TMP-stdout || exit 1
301 compare /dev/null $TMP-stderr || exit 1
302 compare - $TMP <<EOF || exit 1
303 #### Copyright (C) 1976-1988, 1999-2008, 2010-2011 Free Software
304 #### Foundation, Inc.
308 ## ------------------- ##
309 ## Prefix too large. ##
310 ## ------------------- ##
312 TMP=$TMP_BASE-prefix-too-large
314 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
315 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
316 #### 2008 Free Software Foundation, Inc.
318 UPDATE_COPYRIGHT_YEAR=2010 \
319 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
320 compare /dev/null $TMP-stdout || exit 1
321 compare - $TMP-stderr <<EOF || exit 1
322 $TMP: warning: FSF copyright statement not found
324 compare - $TMP <<EOF || exit 1
325 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
326 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
327 #### 2008 Free Software Foundation, Inc.
335 TMP=$TMP_BASE-blank-lines
337 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
339 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
340 #2008 Free Software Foundation, Inc.
342 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
344 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
345 2008 Free Software Foundation, Inc.
347 UPDATE_COPYRIGHT_YEAR=2010 \
348 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
349 compare /dev/null $TMP-stdout || exit 1
350 compare - $TMP-stderr <<EOF || exit 1
351 $TMP: warning: FSF copyright statement not found
353 compare - $TMP <<EOF || exit 1
354 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
356 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
357 #2008 Free Software Foundation, Inc.
359 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
361 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
362 2008 Free Software Foundation, Inc.
370 TMP=$TMP_BASE-leading-tabs
372 Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
373 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
374 Software Foundation, Inc.
376 UPDATE_COPYRIGHT_YEAR=2010 \
377 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
378 compare /dev/null $TMP-stdout || exit 1
379 compare /dev/null $TMP-stderr || exit 1
380 compare - $TMP <<EOF || exit 1
381 Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
382 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
383 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
385 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
386 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
387 compare /dev/null $TMP-stdout || exit 1
388 compare /dev/null $TMP-stderr || exit 1
389 compare - $TMP <<EOF || exit 1
390 Copyright (C) 1987-1988, 1991-2011 Free Software Foundation,
395 ## -------------------- ##
396 ## Unusual whitespace. ##
397 ## -------------------- ##
399 TMP=$TMP_BASE-unusual-ws
401 # Copyright (C) 87-88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
402 # 98, 1999, 2000, 2001, 2002, 2003,
\f 2004, 2005, 2006, 2007, 2008,
403 # 2009 Free Software Foundation, Inc.
405 UPDATE_COPYRIGHT_YEAR=2010 \
406 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
407 compare /dev/null $TMP-stdout || exit 1
408 compare /dev/null $TMP-stderr || exit 1
409 compare - $TMP <<EOF || exit 1
410 # Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994,
411 # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
412 # 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
415 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
416 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
417 compare /dev/null $TMP-stdout || exit 1
418 compare /dev/null $TMP-stderr || exit 1
419 compare - $TMP <<EOF || exit 1
420 # Copyright (C) 1987-1988, 1991-2011 Free Software
429 TMP=$TMP_BASE-dos-eol
430 tr @ '\015' > $TMP <<\EOF
431 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
432 Rem 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
433 Rem 2009 Free Software Foundation, Inc.@
435 UPDATE_COPYRIGHT_YEAR=2010 \
436 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
437 compare /dev/null $TMP-stdout || exit 1
438 compare /dev/null $TMP-stderr || exit 1
439 tr @ '\015' > $TMP-exp <<\EOF
440 Rem Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
441 Rem 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
442 Rem 2009, 2010 Free Software Foundation, Inc.@
444 compare $TMP-exp $TMP || exit 1
447 ## --------------- ##
449 ## --------------- ##
451 TMP=$TMP_BASE-omitted-circle-c
453 Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
454 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
455 2009 Free Software Foundation, Inc.
457 UPDATE_COPYRIGHT_YEAR=2010 \
458 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
459 compare /dev/null $TMP-stdout || exit 1
460 compare /dev/null $TMP-stderr || exit 1
461 compare - $TMP <<EOF || exit 1
462 Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
463 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
464 Free Software Foundation, Inc.
468 ## ------------------ ##
469 ## C-style comments. ##
470 ## ------------------ ##
472 TMP=$TMP_BASE-c-style-comments
473 cat > $TMP.star <<EOF
474 /* Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
475 * 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
476 * 2009 Free Software Foundation, Inc. */
478 cat > $TMP.space <<EOF
479 /*Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
480 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
481 2009 Free Software Foundation, Inc. */
483 cat > $TMP.single-line <<EOF
484 /* Copyright 87, 1991, 1992 Free Software Foundation, Inc. */
486 cat > $TMP.single-line-wrapped <<EOF
487 /* Copyright 1988, 1991, 1992, 1993 Free Software Foundation, Inc. */
489 cat > $TMP.extra-text-star <<EOF
490 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. End
493 cat > $TMP.extra-text-space <<EOF
494 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. ***
495 * End of comments. */
497 UPDATE_COPYRIGHT_YEAR=2010 \
498 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
499 compare /dev/null $TMP-stdout || exit 1
500 compare /dev/null $TMP-stderr || exit 1
501 compare - $TMP.star <<EOF || exit 1
502 /* Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
503 * 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
504 * 2009, 2010 Free Software Foundation, Inc. */
506 compare - $TMP.space <<EOF || exit 1
507 /*Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
508 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
509 2009, 2010 Free Software Foundation, Inc. */
511 compare - $TMP.single-line <<EOF || exit 1
512 /* Copyright 1987, 1991, 1992, 2010 Free Software Foundation, Inc. */
514 compare - $TMP.single-line-wrapped <<EOF || exit 1
515 /* Copyright 1988, 1991, 1992, 1993, 2010 Free Software Foundation,
518 compare - $TMP.extra-text-star <<EOF || exit 1
519 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
523 compare - $TMP.extra-text-space <<EOF || exit 1
524 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
526 * End of comments. */