2 # Test suite for update-copyright.
3 # Copyright (C) 2009 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 ## ----------------------------- ##
51 ## Examples from documentation. ##
52 ## ----------------------------- ##
56 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
60 # Copyright (C) 1990-2005, 2007-2009 Free Software
65 * Copyright © 90,2005,2007-2009
66 * Free Software Foundation, Inc.
70 ## Copyright (C) 1990-2005, 2007-2009 Free Software
74 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
77 ## Copyright (C) 1990-2005, 2007-2009 Free Software
80 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
84 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
86 # Copyright (C) 1990-2005, 2007-2009 Free Software
91 UPDATE_COPYRIGHT_YEAR=2009 \
92 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
93 compare /dev/null $TMP-stdout || exit 1
94 compare - $TMP-stderr <<EOF || exit 1
95 $TMP.4: warning: FSF copyright statement not found
96 $TMP.5: warning: FSF copyright statement not found
98 compare - $TMP.1 <<EOF || exit 1
99 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
102 compare - $TMP.2 <<EOF || exit 1
103 # Copyright (C) 1990-2005, 2007-2009 Free Software
106 compare - $TMP.3 <<EOF || exit 1
108 * Copyright © 90,2005,2007-2009
109 * Free Software Foundation, Inc.
112 compare - $TMP.4 <<EOF || exit 1
113 ## Copyright (C) 1990-2005, 2007-2009 Free Software
116 compare - $TMP.5 <<EOF || exit 1
117 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
119 compare - $TMP.6 <<EOF || exit 1
120 ## Copyright (C) 1990-2005, 2007-2009 Free Software
123 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
126 compare - $TMP.7 <<EOF || exit 1
127 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
129 # Copyright (C) 1990-2005, 2007-2009 Free Software
134 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
135 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
136 compare /dev/null $TMP-stdout || exit 1
137 compare - $TMP-stderr <<EOF || exit 1
138 $TMP.4: warning: FSF copyright statement not found
139 $TMP.5: warning: FSF copyright statement not found
141 compare - $TMP.1 <<EOF || exit 1
142 Copyright @copyright{} 1990-2005, 2007-2010 Free Software Foundation,
145 compare - $TMP.2 <<EOF || exit 1
146 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
148 compare - $TMP.3 <<EOF || exit 1
150 * Copyright © 1990, 2005, 2007-2010 Free Software Foundation, Inc.
153 compare - $TMP.4 <<EOF || exit 1
154 ## Copyright (C) 1990-2005, 2007-2009 Free Software
157 compare - $TMP.5 <<EOF || exit 1
158 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
160 compare - $TMP.6 <<EOF || exit 1
161 ## Copyright (C) 1990-2005, 2007-2009 Free Software
164 Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
166 compare - $TMP.7 <<EOF || exit 1
167 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
169 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
173 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_FORCE=1 \
174 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
175 compare /dev/null $TMP-stdout || exit 1
176 compare - $TMP-stderr <<EOF || exit 1
177 $TMP.4: warning: FSF copyright statement not found
178 $TMP.5: warning: FSF copyright statement not found
180 compare - $TMP.1 <<EOF || exit 1
181 Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
182 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
183 Free Software Foundation, Inc.
185 compare - $TMP.2 <<EOF || exit 1
186 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
187 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
188 # Software Foundation, Inc.
190 compare - $TMP.3 <<EOF || exit 1
192 * Copyright © 1990, 2005, 2007, 2008, 2009, 2010 Free Software
196 compare - $TMP.4 <<EOF || exit 1
197 ## Copyright (C) 1990-2005, 2007-2009 Free Software
200 compare - $TMP.5 <<EOF || exit 1
201 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
203 compare - $TMP.6 <<EOF || exit 1
204 ## Copyright (C) 1990-2005, 2007-2009 Free Software
207 Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
208 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
209 Software Foundation, Inc.
211 compare - $TMP.7 <<EOF || exit 1
212 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
214 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
215 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
216 # Software Foundation, Inc.
225 TMP=$TMP_BASE-current-year
226 YEAR=`/usr/bin/perl -e 'print [localtime]->[5] + 1900'`;
228 '\" Copyright (C) 2006
229 '\" Free Software Foundation,
232 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
233 compare /dev/null $TMP-stdout || exit 1
234 compare /dev/null $TMP-stderr || exit 1
235 compare - $TMP <<EOF || exit 1
236 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
238 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
239 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
240 compare /dev/null $TMP-stdout || exit 1
241 compare /dev/null $TMP-stderr || exit 1
242 compare - $TMP <<EOF || exit 1
243 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
247 ## ------------------ ##
248 ## Surrounding text. ##
249 ## ------------------ ##
251 TMP=$TMP_BASE-surrounding-text
254 dnl Undisturbed text.
256 dnl Free Software Foundation, Inc.
257 dnl Undisturbed text.
259 UPDATE_COPYRIGHT_YEAR=2010 \
260 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
261 compare /dev/null $TMP-stdout || exit 1
262 compare /dev/null $TMP-stderr || exit 1
263 compare - $TMP <<EOF || exit 1
265 dnl Undisturbed text.
266 dnl Copyright (C) 1989, 2010 Free Software Foundation, Inc.
267 dnl Undisturbed text.
271 ## --------------- ##
273 ## --------------- ##
275 TMP=$TMP_BASE-widest-prefix
277 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
278 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
279 #### 2008 Free Software Foundation, Inc.
281 UPDATE_COPYRIGHT_YEAR=2010 \
282 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
283 compare /dev/null $TMP-stdout || exit 1
284 compare /dev/null $TMP-stderr || exit 1
285 compare - $TMP <<EOF || exit 1
286 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
287 #### 1985, 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
288 #### 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
290 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
291 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
292 compare /dev/null $TMP-stdout || exit 1
293 compare /dev/null $TMP-stderr || exit 1
294 compare - $TMP <<EOF || exit 1
295 #### Copyright (C) 1976-1988, 1999-2008, 2010-2011 Free Software
296 #### Foundation, Inc.
300 ## ------------------- ##
301 ## Prefix too large. ##
302 ## ------------------- ##
304 TMP=$TMP_BASE-prefix-too-large
306 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
307 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
308 #### 2008 Free Software Foundation, Inc.
310 UPDATE_COPYRIGHT_YEAR=2010 \
311 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
312 compare /dev/null $TMP-stdout || exit 1
313 compare - $TMP-stderr <<EOF || exit 1
314 $TMP: warning: FSF copyright statement not found
316 compare - $TMP <<EOF || exit 1
317 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
318 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
319 #### 2008 Free Software Foundation, Inc.
327 TMP=$TMP_BASE-blank-lines
329 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
331 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
332 #2008 Free Software Foundation, Inc.
334 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
336 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
337 2008 Free Software Foundation, Inc.
339 UPDATE_COPYRIGHT_YEAR=2010 \
340 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
341 compare /dev/null $TMP-stdout || exit 1
342 compare - $TMP-stderr <<EOF || exit 1
343 $TMP: warning: FSF copyright statement not found
345 compare - $TMP <<EOF || exit 1
346 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
348 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
349 #2008 Free Software Foundation, Inc.
351 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
353 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
354 2008 Free Software Foundation, Inc.
362 TMP=$TMP_BASE-leading-tabs
364 Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
365 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
366 Software Foundation, Inc.
368 UPDATE_COPYRIGHT_YEAR=2010 \
369 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
370 compare /dev/null $TMP-stdout || exit 1
371 compare /dev/null $TMP-stderr || exit 1
372 compare - $TMP <<EOF || exit 1
373 Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
374 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
375 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
377 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
378 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
379 compare /dev/null $TMP-stdout || exit 1
380 compare /dev/null $TMP-stderr || exit 1
381 compare - $TMP <<EOF || exit 1
382 Copyright (C) 1987-1988, 1991-2011 Free Software Foundation,
387 ## -------------------- ##
388 ## Unusual whitespace. ##
389 ## -------------------- ##
391 TMP=$TMP_BASE-unusual-ws
393 # Copyright (C) 87-88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
394 # 98, 1999, 2000, 2001, 2002, 2003,
\f 2004, 2005, 2006, 2007, 2008,
395 # 2009 Free Software Foundation, Inc.
397 UPDATE_COPYRIGHT_YEAR=2010 \
398 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
399 compare /dev/null $TMP-stdout || exit 1
400 compare /dev/null $TMP-stderr || exit 1
401 compare - $TMP <<EOF || exit 1
402 # Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994,
403 # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
404 # 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
407 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
408 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
409 compare /dev/null $TMP-stdout || exit 1
410 compare /dev/null $TMP-stderr || exit 1
411 compare - $TMP <<EOF || exit 1
412 # Copyright (C) 1987-1988, 1991-2011 Free Software
421 TMP=$TMP_BASE-dos-eol
422 tr @ '\015' > $TMP <<\EOF
423 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
424 Rem 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
425 Rem 2009 Free Software Foundation, Inc.@
427 UPDATE_COPYRIGHT_YEAR=2010 \
428 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
429 compare /dev/null $TMP-stdout || exit 1
430 compare /dev/null $TMP-stderr || exit 1
431 tr @ '\015' > $TMP-exp <<\EOF
432 Rem Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
433 Rem 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
434 Rem 2009, 2010 Free Software Foundation, Inc.@
436 compare $TMP-exp $TMP || exit 1
439 ## --------------- ##
441 ## --------------- ##
443 TMP=$TMP_BASE-omitted-circle-c
445 Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
446 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
447 2009 Free Software Foundation, Inc.
449 UPDATE_COPYRIGHT_YEAR=2010 \
450 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
451 compare /dev/null $TMP-stdout || exit 1
452 compare /dev/null $TMP-stderr || exit 1
453 compare - $TMP <<EOF || exit 1
454 Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
455 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
456 Free Software Foundation, Inc.
460 ## ------------------ ##
461 ## C-style comments. ##
462 ## ------------------ ##
464 TMP=$TMP_BASE-c-style-comments
465 cat > $TMP.star <<EOF
466 /* Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
467 * 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
468 * 2009 Free Software Foundation, Inc. */
470 cat > $TMP.space <<EOF
471 /*Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
472 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
473 2009 Free Software Foundation, Inc. */
475 cat > $TMP.single-line <<EOF
476 /* Copyright 87, 1991, 1992 Free Software Foundation, Inc. */
478 cat > $TMP.single-line-wrapped <<EOF
479 /* Copyright 1988, 1991, 1992, 1993 Free Software Foundation, Inc. */
481 cat > $TMP.extra-text-star <<EOF
482 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. End
485 cat > $TMP.extra-text-space <<EOF
486 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. ***
487 * End of comments. */
489 UPDATE_COPYRIGHT_YEAR=2010 \
490 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
491 compare /dev/null $TMP-stdout || exit 1
492 compare /dev/null $TMP-stderr || exit 1
493 compare - $TMP.star <<EOF || exit 1
494 /* Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
495 * 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
496 * 2009, 2010 Free Software Foundation, Inc. */
498 compare - $TMP.space <<EOF || exit 1
499 /*Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
500 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
501 2009, 2010 Free Software Foundation, Inc. */
503 compare - $TMP.single-line <<EOF || exit 1
504 /* Copyright 1987, 1991, 1992, 2010 Free Software Foundation, Inc. */
506 compare - $TMP.single-line-wrapped <<EOF || exit 1
507 /* Copyright 1988, 1991, 1992, 1993, 2010 Free Software Foundation,
510 compare - $TMP.extra-text-star <<EOF || exit 1
511 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
515 compare - $TMP.extra-text-space <<EOF || exit 1
516 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
518 * End of comments. */