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, 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. */