2 # Test suite for update-copyright.
3 # Copyright (C) 2009-2011 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
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 # Skip this test if Perl is too old. FIXME: 5.8.0 is just a guess.
55 # We have a report that 5.6.1 is inadequate and that 5.8.0 works.
56 perl -e 'require 5.8.0' || {
57 echo '$0: skipping this test; Perl version is too old' 1>&2
61 # Do not let a different envvar setting perturb results.
62 UPDATE_COPYRIGHT_MAX_LINE_LENGTH=72
63 export UPDATE_COPYRIGHT_MAX_LINE_LENGTH
65 ## ----------------------------- ##
66 ## Examples from documentation. ##
67 ## ----------------------------- ##
71 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
75 # Copyright (C) 1990-2005, 2007-2009 Free Software
80 * Copyright © 90,2005,2007-2009
81 * Free Software Foundation, Inc.
85 ## Copyright (C) 1990-2005, 2007-2009 Free Software
89 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
92 ## Copyright (C) 1990-2005, 2007-2009 Free Software
95 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
99 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
101 # Copyright (C) 1990-2005, 2007-2009 Free Software
106 UPDATE_COPYRIGHT_YEAR=2009 \
107 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
108 compare /dev/null $TMP-stdout || exit 1
109 compare - $TMP-stderr <<EOF || exit 1
110 $TMP.4: warning: copyright statement not found
111 $TMP.5: warning: copyright statement not found
113 compare - $TMP.1 <<EOF || exit 1
114 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
117 compare - $TMP.2 <<EOF || exit 1
118 # Copyright (C) 1990-2005, 2007-2009 Free Software
121 compare - $TMP.3 <<EOF || exit 1
123 * Copyright © 90,2005,2007-2009
124 * Free Software Foundation, Inc.
127 compare - $TMP.4 <<EOF || exit 1
128 ## Copyright (C) 1990-2005, 2007-2009 Free Software
131 compare - $TMP.5 <<EOF || exit 1
132 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
134 compare - $TMP.6 <<EOF || exit 1
135 ## Copyright (C) 1990-2005, 2007-2009 Free Software
138 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
141 compare - $TMP.7 <<EOF || exit 1
142 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
144 # Copyright (C) 1990-2005, 2007-2009 Free Software
149 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
150 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
151 compare /dev/null $TMP-stdout || exit 1
152 compare - $TMP-stderr <<EOF || exit 1
153 $TMP.4: warning: copyright statement not found
154 $TMP.5: warning: copyright statement not found
156 compare - $TMP.1 <<EOF || exit 1
157 Copyright @copyright{} 1990-2005, 2007-2010 Free Software Foundation,
160 compare - $TMP.2 <<EOF || exit 1
161 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
163 compare - $TMP.3 <<EOF || exit 1
165 * Copyright © 1990, 2005, 2007-2010 Free Software Foundation, Inc.
168 compare - $TMP.4 <<EOF || exit 1
169 ## Copyright (C) 1990-2005, 2007-2009 Free Software
172 compare - $TMP.5 <<EOF || exit 1
173 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
175 compare - $TMP.6 <<EOF || exit 1
176 ## Copyright (C) 1990-2005, 2007-2009 Free Software
179 Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
181 compare - $TMP.7 <<EOF || exit 1
182 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
184 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
188 UPDATE_COPYRIGHT_YEAR=2010 UPDATE_COPYRIGHT_FORCE=1 \
189 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
190 compare /dev/null $TMP-stdout || exit 1
191 compare - $TMP-stderr <<EOF || exit 1
192 $TMP.4: warning: copyright statement not found
193 $TMP.5: warning: copyright statement not found
195 compare - $TMP.1 <<EOF || exit 1
196 Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
197 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
198 Free Software Foundation, Inc.
200 compare - $TMP.2 <<EOF || exit 1
201 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
202 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
203 # Software Foundation, Inc.
205 compare - $TMP.3 <<EOF || exit 1
207 * Copyright © 1990, 2005, 2007, 2008, 2009, 2010 Free Software
211 compare - $TMP.4 <<EOF || exit 1
212 ## Copyright (C) 1990-2005, 2007-2009 Free Software
215 compare - $TMP.5 <<EOF || exit 1
216 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
218 compare - $TMP.6 <<EOF || exit 1
219 ## Copyright (C) 1990-2005, 2007-2009 Free Software
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.
226 compare - $TMP.7 <<EOF || exit 1
227 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
229 # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
230 # 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 Free
231 # Software Foundation, Inc.
240 TMP=$TMP_BASE-current-year
243 '\" Copyright (C) 2006
244 '\" Free Software Foundation,
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.
253 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
254 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
255 compare /dev/null $TMP-stdout || exit 1
256 compare /dev/null $TMP-stderr || exit 1
257 compare - $TMP <<EOF || exit 1
258 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
262 ## ------------------ ##
263 ## Surrounding text. ##
264 ## ------------------ ##
266 TMP=$TMP_BASE-surrounding-text
269 dnl Undisturbed text.
271 dnl Free Software Foundation, Inc.
272 dnl Undisturbed text.
274 UPDATE_COPYRIGHT_YEAR=2010 \
275 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
276 compare /dev/null $TMP-stdout || exit 1
277 compare /dev/null $TMP-stderr || exit 1
278 compare - $TMP <<EOF || exit 1
280 dnl Undisturbed text.
281 dnl Copyright (C) 1989, 2010 Free Software Foundation, Inc.
282 dnl Undisturbed text.
286 ## --------------- ##
288 ## --------------- ##
290 TMP=$TMP_BASE-widest-prefix
292 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
293 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
294 #### 2008 Free Software Foundation, Inc.
296 UPDATE_COPYRIGHT_YEAR=2010 \
297 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
298 compare /dev/null $TMP-stdout || exit 1
299 compare /dev/null $TMP-stderr || exit 1
300 compare - $TMP <<EOF || exit 1
301 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
302 #### 1985, 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
303 #### 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
305 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
306 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
307 compare /dev/null $TMP-stdout || exit 1
308 compare /dev/null $TMP-stderr || exit 1
309 compare - $TMP <<EOF || exit 1
310 #### Copyright (C) 1976-1988, 1999-2008, 2010-2011 Free Software
311 #### Foundation, Inc.
315 ## ------------------- ##
316 ## Prefix too large. ##
317 ## ------------------- ##
319 TMP=$TMP_BASE-prefix-too-large
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.
325 UPDATE_COPYRIGHT_YEAR=2010 \
326 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
327 compare /dev/null $TMP-stdout || exit 1
328 compare - $TMP-stderr <<EOF || exit 1
329 $TMP: warning: copyright statement not found
331 compare - $TMP <<EOF || exit 1
332 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
333 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
334 #### 2008 Free Software Foundation, Inc.
342 TMP=$TMP_BASE-blank-lines
344 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
346 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
347 #2008 Free Software Foundation, Inc.
349 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
351 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
352 2008 Free Software Foundation, Inc.
354 UPDATE_COPYRIGHT_YEAR=2010 \
355 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
356 compare /dev/null $TMP-stdout || exit 1
357 compare - $TMP-stderr <<EOF || exit 1
358 $TMP: warning: copyright statement not found
360 compare - $TMP <<EOF || exit 1
361 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
363 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
364 #2008 Free Software Foundation, Inc.
366 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
368 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
369 2008 Free Software Foundation, Inc.
377 TMP=$TMP_BASE-leading-tabs
379 Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
380 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
381 Software Foundation, Inc.
383 UPDATE_COPYRIGHT_YEAR=2010 \
384 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
385 compare /dev/null $TMP-stdout || exit 1
386 compare /dev/null $TMP-stderr || exit 1
387 compare - $TMP <<EOF || exit 1
388 Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996,
389 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
390 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
392 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
393 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
394 compare /dev/null $TMP-stdout || exit 1
395 compare /dev/null $TMP-stderr || exit 1
396 compare - $TMP <<EOF || exit 1
397 Copyright (C) 1987-1988, 1991-2011 Free Software Foundation,
402 ## -------------------- ##
403 ## Unusual whitespace. ##
404 ## -------------------- ##
406 TMP=$TMP_BASE-unusual-ws
408 # Copyright (C) 87-88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
409 # 98, 1999, 2000, 2001, 2002, 2003,
\f 2004, 2005, 2006, 2007, 2008,
410 # 2009 Free Software Foundation, Inc.
412 UPDATE_COPYRIGHT_YEAR=2010 \
413 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
414 compare /dev/null $TMP-stdout || exit 1
415 compare /dev/null $TMP-stderr || exit 1
416 compare - $TMP <<EOF || exit 1
417 # Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994,
418 # 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
419 # 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
422 UPDATE_COPYRIGHT_YEAR=2011 UPDATE_COPYRIGHT_USE_INTERVALS=1 \
423 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
424 compare /dev/null $TMP-stdout || exit 1
425 compare /dev/null $TMP-stderr || exit 1
426 compare - $TMP <<EOF || exit 1
427 # Copyright (C) 1987-1988, 1991-2011 Free Software
436 TMP=$TMP_BASE-dos-eol
437 tr @ '\015' > $TMP <<\EOF
438 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
439 Rem 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
440 Rem 2009 Free Software Foundation, Inc.@
442 UPDATE_COPYRIGHT_YEAR=2010 \
443 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
444 compare /dev/null $TMP-stdout || exit 1
445 compare /dev/null $TMP-stderr || exit 1
446 tr @ '\015' > $TMP-exp <<\EOF
447 Rem Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
448 Rem 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
449 Rem 2009, 2010 Free Software Foundation, Inc.@
451 compare $TMP-exp $TMP || exit 1
454 ## --------------- ##
456 ## --------------- ##
458 TMP=$TMP_BASE-omitted-circle-c
460 Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
461 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
462 2009 Free Software Foundation, Inc.
464 UPDATE_COPYRIGHT_YEAR=2010 \
465 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
466 compare /dev/null $TMP-stdout || exit 1
467 compare /dev/null $TMP-stderr || exit 1
468 compare - $TMP <<EOF || exit 1
469 Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
470 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
471 Free Software Foundation, Inc.
475 ## ------------------ ##
476 ## C-style comments. ##
477 ## ------------------ ##
479 TMP=$TMP_BASE-c-style-comments
480 cat > $TMP.star <<EOF
481 /* Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
482 * 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
483 * 2009 Free Software Foundation, Inc. */
485 cat > $TMP.space <<EOF
486 /*Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
487 98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
488 2009 Free Software Foundation, Inc. */
490 cat > $TMP.single-line <<EOF
491 /* Copyright 87, 1991, 1992 Free Software Foundation, Inc. */
493 cat > $TMP.single-line-wrapped <<EOF
494 /* Copyright 1988, 1991, 1992, 1993 Free Software Foundation, Inc. */
496 cat > $TMP.extra-text-star <<EOF
497 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. End
500 cat > $TMP.extra-text-space <<EOF
501 /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. ***
502 * End of comments. */
504 UPDATE_COPYRIGHT_YEAR=2010 \
505 update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
506 compare /dev/null $TMP-stdout || exit 1
507 compare /dev/null $TMP-stderr || exit 1
508 compare - $TMP.star <<EOF || exit 1
509 /* Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
510 * 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
511 * 2009, 2010 Free Software Foundation, Inc. */
513 compare - $TMP.space <<EOF || exit 1
514 /*Copyright 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
515 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
516 2009, 2010 Free Software Foundation, Inc. */
518 compare - $TMP.single-line <<EOF || exit 1
519 /* Copyright 1987, 1991, 1992, 2010 Free Software Foundation, Inc. */
521 compare - $TMP.single-line-wrapped <<EOF || exit 1
522 /* Copyright 1988, 1991, 1992, 1993, 2010 Free Software Foundation,
525 compare - $TMP.extra-text-star <<EOF || exit 1
526 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
530 compare - $TMP.extra-text-space <<EOF || exit 1
531 /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
533 * End of comments. */