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 TMP_BASE=update-copyright.test
27 trap 'rm -f $TMP_BASE*' 0 1 2 3 15
29 ## --------------------------------- ##
30 ## Skip if user does not have perl. ##
31 ## --------------------------------- ##
36 eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
37 & eval 'exec perl -wS -0777 -pi "$0" $argv:q'
43 ./$s $TMP-in 2>/dev/null && test b = "`cat $TMP-in 2>/dev/null`" ||
45 printf '%s\n' "$0: skipping this test;" \
46 'your system has insufficient support for Perl' 1>&2
50 # Do not let a different envvar setting perturb results.
51 UPDATE_COPYRIGHT_MAX_LINE_LENGTH=72
52 export UPDATE_COPYRIGHT_MAX_LINE_LENGTH
54 ## ----------------------------- ##
55 ## Examples from documentation. ##
56 ## ----------------------------- ##
60 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
64 # Copyright (C) 1990-2005, 2007-2009 Free Software
69 * Copyright © 90,2005,2007-2009
70 * Free Software Foundation, Inc.
74 ## Copyright (C) 1990-2005, 2007-2009 Free Software
78 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
81 ## Copyright (C) 1990-2005, 2007-2009 Free Software
84 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
88 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
90 # Copyright (C) 1990-2005, 2007-2009 Free Software
95 UPDATE_COPYRIGHT_YEAR=2009 \
96 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
97 compare /dev/null $TMP-stdout || exit 1
98 compare - $TMP-stderr <<EOF || exit 1
99 $TMP.4: warning: FSF copyright statement not found
100 $TMP.5: warning: FSF copyright statement not found
102 compare - $TMP.1 <<EOF || exit 1
103 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
106 compare - $TMP.2 <<EOF || exit 1
107 # Copyright (C) 1990-2005, 2007-2009 Free Software
110 compare - $TMP.3 <<EOF || exit 1
112 * Copyright © 90,2005,2007-2009
113 * Free Software Foundation, Inc.
116 compare - $TMP.4 <<EOF || exit 1
117 ## Copyright (C) 1990-2005, 2007-2009 Free Software
120 compare - $TMP.5 <<EOF || exit 1
121 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
123 compare - $TMP.6 <<EOF || exit 1
124 ## Copyright (C) 1990-2005, 2007-2009 Free Software
127 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
130 compare - $TMP.7 <<EOF || exit 1
131 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
133 # Copyright (C) 1990-2005, 2007-2009 Free Software
138 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
139 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
140 compare /dev/null $TMP-stdout || exit 1
141 compare - $TMP-stderr <<EOF || exit 1
142 $TMP.4: warning: FSF copyright statement not found
143 $TMP.5: warning: FSF copyright statement not found
145 compare - $TMP.1 <<EOF || exit 1
146 Copyright @copyright{} 1990-2005, 2007-2010 Free Software Foundation,
149 compare - $TMP.2 <<EOF || exit 1
150 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
152 compare - $TMP.3 <<EOF || exit 1
154 * Copyright © 1990, 2005, 2007-2010 Free Software Foundation, Inc.
157 compare - $TMP.4 <<EOF || exit 1
158 ## Copyright (C) 1990-2005, 2007-2009 Free Software
161 compare - $TMP.5 <<EOF || exit 1
162 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
164 compare - $TMP.6 <<EOF || exit 1
165 ## Copyright (C) 1990-2005, 2007-2009 Free Software
168 Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
170 compare - $TMP.7 <<EOF || exit 1
171 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
173 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
177 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_FORCE=1 \
178 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
179 compare /dev/null $TMP-stdout || exit 1
180 compare - $TMP-stderr <<EOF || exit 1
181 $TMP.4: warning: FSF copyright statement not found
182 $TMP.5: warning: FSF copyright statement not found
184 compare - $TMP.1 <<EOF || exit 1
185 Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
186 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
187 Free Software Foundation, Inc.
189 compare - $TMP.2 <<EOF || exit 1
190 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
191 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
192 # Software Foundation, Inc.
194 compare - $TMP.3 <<EOF || exit 1
196 * Copyright © 1990, 2005, 2007, 2008, 2009, 2010 Free Software
200 compare - $TMP.4 <<EOF || exit 1
201 ## Copyright (C) 1990-2005, 2007-2009 Free Software
204 compare - $TMP.5 <<EOF || exit 1
205 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
207 compare - $TMP.6 <<EOF || exit 1
208 ## Copyright (C) 1990-2005, 2007-2009 Free Software
211 Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
212 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
213 Software Foundation, Inc.
215 compare - $TMP.7 <<EOF || exit 1
216 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
218 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
219 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
220 # Software Foundation, Inc.
229 TMP=$TMP_BASE-current-year
232 '\" Copyright (C) 2006
233 '\" Free Software Foundation,
236 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
237 compare /dev/null $TMP-stdout || exit 1
238 compare /dev/null $TMP-stderr || exit 1
239 compare - $TMP <<EOF || exit 1
240 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
242 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
243 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
244 compare /dev/null $TMP-stdout || exit 1
245 compare /dev/null $TMP-stderr || exit 1
246 compare - $TMP <<EOF || exit 1
247 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
251 ## ------------------ ##
252 ## Surrounding text. ##
253 ## ------------------ ##
255 TMP=$TMP_BASE-surrounding-text
258 dnl Undisturbed text.
260 dnl Free Software Foundation, Inc.
261 dnl Undisturbed text.
263 UPDATE_COPYRIGHT_YEAR=2010 \
264 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
265 compare /dev/null $TMP-stdout || exit 1
266 compare /dev/null $TMP-stderr || exit 1
267 compare - $TMP <<EOF || exit 1
269 dnl Undisturbed text.
270 dnl Copyright (C) 1989, 2010 Free Software Foundation, Inc.
271 dnl Undisturbed text.
275 ## --------------- ##
277 ## --------------- ##
279 TMP=$TMP_BASE-widest-prefix
281 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
282 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
283 #### 2008 Free Software Foundation, Inc.
285 UPDATE_COPYRIGHT_YEAR=2010 \
286 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
287 compare /dev/null $TMP-stdout || exit 1
288 compare /dev/null $TMP-stderr || exit 1
289 compare - $TMP <<EOF || exit 1
290 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
291 #### 1985, 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
292 #### 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
294 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
295 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
296 compare /dev/null $TMP-stdout || exit 1
297 compare /dev/null $TMP-stderr || exit 1
298 compare - $TMP <<EOF || exit 1
299 #### Copyright (C) 1976-1988, 1999-2008, 2010-2011 Free Software
300 #### Foundation, Inc.
304 ## ------------------- ##
305 ## Prefix too large. ##
306 ## ------------------- ##
308 TMP=$TMP_BASE-prefix-too-large
310 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
311 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
312 #### 2008 Free Software Foundation, Inc.
314 UPDATE_COPYRIGHT_YEAR=2010 \
315 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
316 compare /dev/null $TMP-stdout || exit 1
317 compare - $TMP-stderr <<EOF || exit 1
318 $TMP: warning: FSF copyright statement not found
320 compare - $TMP <<EOF || exit 1
321 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
322 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
323 #### 2008 Free Software Foundation, Inc.
331 TMP=$TMP_BASE-blank-lines
333 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
335 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
336 #2008 Free Software Foundation, Inc.
338 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
340 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
341 2008 Free Software Foundation, Inc.
343 UPDATE_COPYRIGHT_YEAR=2010 \
344 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
345 compare /dev/null $TMP-stdout || exit 1
346 compare - $TMP-stderr <<EOF || exit 1
347 $TMP: warning: FSF copyright statement not found
349 compare - $TMP <<EOF || exit 1
350 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
352 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
353 #2008 Free Software Foundation, Inc.
355 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
357 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
358 2008 Free Software Foundation, Inc.
366 TMP=$TMP_BASE-leading-tabs
368 Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
369 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
370 Software Foundation, Inc.
372 UPDATE_COPYRIGHT_YEAR=2010 \
373 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
374 compare /dev/null $TMP-stdout || exit 1
375 compare /dev/null $TMP-stderr || exit 1
376 compare - $TMP <<EOF || exit 1
377 Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
378 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
379 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
381 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
382 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
383 compare /dev/null $TMP-stdout || exit 1
384 compare /dev/null $TMP-stderr || exit 1
385 compare - $TMP <<EOF || exit 1
386 Copyright (C) 1987-1988, 1991-2011 Free Software Foundation,
391 ## -------------------- ##
392 ## Unusual whitespace. ##
393 ## -------------------- ##
395 TMP=$TMP_BASE-unusual-ws
397 # Copyright (C) 87-88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
398 # 98, 1999, 2000, 2001, 2002, 2003,
\f 2004, 2005, 2006, 2007, 2008,
399 # 2009 Free Software Foundation, Inc.
401 UPDATE_COPYRIGHT_YEAR=2010 \
402 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
403 compare /dev/null $TMP-stdout || exit 1
404 compare /dev/null $TMP-stderr || exit 1
405 compare - $TMP <<EOF || exit 1
406 # Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994,
407 # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
408 # 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
411 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
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-2011 Free Software
425 TMP=$TMP_BASE-dos-eol
426 tr @ '\015' > $TMP <<\EOF
427 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
428 Rem 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
429 Rem 2009 Free Software Foundation, Inc.@
431 UPDATE_COPYRIGHT_YEAR=2010 \
432 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
433 compare /dev/null $TMP-stdout || exit 1
434 compare /dev/null $TMP-stderr || exit 1
435 tr @ '\015' > $TMP-exp <<\EOF
436 Rem Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
437 Rem 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
438 Rem 2009, 2010 Free Software Foundation, Inc.@
440 compare $TMP-exp $TMP || exit 1
443 ## --------------- ##
445 ## --------------- ##
447 TMP=$TMP_BASE-omitted-circle-c
449 Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
450 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
451 2009 Free Software Foundation, Inc.
453 UPDATE_COPYRIGHT_YEAR=2010 \
454 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
455 compare /dev/null $TMP-stdout || exit 1
456 compare /dev/null $TMP-stderr || exit 1
457 compare - $TMP <<EOF || exit 1
458 Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
459 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
460 Free Software Foundation, Inc.
464 ## ------------------ ##
465 ## C-style comments. ##
466 ## ------------------ ##
468 TMP=$TMP_BASE-c-style-comments
469 cat > $TMP.star <<EOF
470 /* Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
471 * 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
472 * 2009 Free Software Foundation, Inc. */
474 cat > $TMP.space <<EOF
475 /*Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
476 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
477 2009 Free Software Foundation, Inc. */
479 cat > $TMP.single-line <<EOF
480 /* Copyright 87, 1991, 1992 Free Software Foundation, Inc. */
482 cat > $TMP.single-line-wrapped <<EOF
483 /* Copyright 1988, 1991, 1992, 1993 Free Software Foundation, Inc. */
485 cat > $TMP.extra-text-star <<EOF
486 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. End
489 cat > $TMP.extra-text-space <<EOF
490 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. ***
491 * End of comments. */
493 UPDATE_COPYRIGHT_YEAR=2010 \
494 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
495 compare /dev/null $TMP-stdout || exit 1
496 compare /dev/null $TMP-stderr || exit 1
497 compare - $TMP.star <<EOF || exit 1
498 /* Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
499 * 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
500 * 2009, 2010 Free Software Foundation, Inc. */
502 compare - $TMP.space <<EOF || exit 1
503 /*Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
504 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
505 2009, 2010 Free Software Foundation, Inc. */
507 compare - $TMP.single-line <<EOF || exit 1
508 /* Copyright 1987, 1991, 1992, 2010 Free Software Foundation, Inc. */
510 compare - $TMP.single-line-wrapped <<EOF || exit 1
511 /* Copyright 1988, 1991, 1992, 1993, 2010 Free Software Foundation,
514 compare - $TMP.extra-text-star <<EOF || exit 1
515 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
519 compare - $TMP.extra-text-space <<EOF || exit 1
520 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
522 * End of comments. */