update-copyright: support C-style comments
[gnulib.git] / tests / test-update-copyright.sh
1 #!/bin/sh
2 # Test suite for update-copyright.
3 # Copyright (C) 2009 Free Software Foundation, Inc.
4 # This file is part of the GNUlib Library.
5 #
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.
10 #
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.
15 #
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/>.
18
19 diffout=`diff -u /dev/null /dev/null 2>&1`
20 if test x"$diffout" = x"" && test $? -eq 0; then
21   compare() { diff -u "$@"; }
22 else
23   compare() { cmp "$@"; }
24 fi
25
26 TMP_BASE=update-copyright.test
27
28 ## ----------------------------- ##
29 ## Examples from documentation.  ##
30 ## ----------------------------- ##
31
32 TMP=$TMP_BASE-ex
33 cat > $TMP.1 <<EOF
34 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
35 Foundation, Inc.
36 EOF
37 cat > $TMP.2 <<EOF
38 # Copyright (C) 1990-2005, 2007-2009 Free Software
39 # Foundation, Inc.
40 EOF
41 cat > $TMP.3 <<EOF
42 /*
43  * Copyright &copy; 90,2005,2007-2009
44  * Free Software Foundation, Inc.
45  */
46 EOF
47 cat > $TMP.4 <<EOF
48 ## Copyright (C) 1990-2005, 2007-2009 Free Software
49 #  Foundation, Inc.
50 EOF
51 cat > $TMP.5 <<EOF
52 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
53 EOF
54 cat > $TMP.6 <<EOF
55 ## Copyright (C) 1990-2005, 2007-2009 Free Software
56 #  Foundation, Inc.
57
58 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
59 Inc.
60 EOF
61 cat > $TMP.7 <<EOF
62 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
63
64 # Copyright (C) 1990-2005, 2007-2009 Free Software
65 # Foundation, Inc.
66 EOF
67
68 UPDATE_COPYRIGHT_YEAR=2009 \
69   update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
70 compare /dev/null $TMP-stdout || exit 1
71 compare - $TMP-stderr <<EOF || exit 1
72 $TMP.4: warning: FSF copyright statement not found
73 $TMP.5: warning: FSF copyright statement not found
74 EOF
75 compare - $TMP.1 <<EOF || exit 1
76 Copyright @copyright{} 1990-2005, 2007-2009 Free Software
77 Foundation, Inc.
78 EOF
79 compare - $TMP.2 <<EOF || exit 1
80 # Copyright (C) 1990-2005, 2007-2009 Free Software
81 # Foundation, Inc.
82 EOF
83 compare - $TMP.3 <<EOF || exit 1
84 /*
85  * Copyright &copy; 90,2005,2007-2009
86  * Free Software Foundation, Inc.
87  */
88 EOF
89 compare - $TMP.4 <<EOF || exit 1
90 ## Copyright (C) 1990-2005, 2007-2009 Free Software
91 #  Foundation, Inc.
92 EOF
93 compare - $TMP.5 <<EOF || exit 1
94 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
95 EOF
96 compare - $TMP.6 <<EOF || exit 1
97 ## Copyright (C) 1990-2005, 2007-2009 Free Software
98 #  Foundation, Inc.
99
100 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
101 Inc.
102 EOF
103 compare - $TMP.7 <<EOF || exit 1
104 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
105
106 # Copyright (C) 1990-2005, 2007-2009 Free Software
107 # Foundation, Inc.
108 EOF
109
110 UPDATE_COPYRIGHT_YEAR=2010 \
111   update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
112 compare /dev/null $TMP-stdout || exit 1
113 compare - $TMP-stderr <<EOF || exit 1
114 $TMP.4: warning: FSF copyright statement not found
115 $TMP.5: warning: FSF copyright statement not found
116 EOF
117 compare - $TMP.1 <<EOF || exit 1
118 Copyright @copyright{} 1990-2005, 2007-2010 Free Software Foundation,
119 Inc.
120 EOF
121 compare - $TMP.2 <<EOF || exit 1
122 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
123 EOF
124 compare - $TMP.3 <<EOF || exit 1
125 /*
126  * Copyright &copy; 90, 2005, 2007-2010 Free Software Foundation, Inc.
127  */
128 EOF
129 compare - $TMP.4 <<EOF || exit 1
130 ## Copyright (C) 1990-2005, 2007-2009 Free Software
131 #  Foundation, Inc.
132 EOF
133 compare - $TMP.5 <<EOF || exit 1
134 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
135 EOF
136 compare - $TMP.6 <<EOF || exit 1
137 ## Copyright (C) 1990-2005, 2007-2009 Free Software
138 #  Foundation, Inc.
139
140 Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
141 EOF
142 compare - $TMP.7 <<EOF || exit 1
143 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
144
145 # Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
146 EOF
147
148 rm $TMP*
149
150 ## -------------- ##
151 ## Current year.  ##
152 ## -------------- ##
153
154 TMP=$TMP_BASE-current-year
155 YEAR=`/usr/bin/perl -e 'print [localtime]->[5] + 1900'`;
156 cat > $TMP <<EOF
157 '\" Copyright (C) 2006
158 '\" Free Software Foundation,
159 '\" Inc.
160 EOF
161 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
162 compare /dev/null $TMP-stdout || exit 1
163 compare /dev/null $TMP-stderr || exit 1
164 compare - $TMP <<EOF || exit 1
165 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
166 EOF
167 rm $TMP*
168
169 ## ------------------ ##
170 ## Surrounding text.  ##
171 ## ------------------ ##
172
173 TMP=$TMP_BASE-surrounding-text
174 cat > $TMP <<EOF
175     Undisturbed text.
176 dnl Undisturbed text.
177 dnl Copyright (C) 89
178 dnl Free Software Foundation, Inc.
179 dnl   Undisturbed text.
180 EOF
181 UPDATE_COPYRIGHT_YEAR=2010 \
182   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
183 compare /dev/null $TMP-stdout || exit 1
184 compare /dev/null $TMP-stderr || exit 1
185 compare - $TMP <<EOF || exit 1
186     Undisturbed text.
187 dnl Undisturbed text.
188 dnl Copyright (C) 1989, 2010 Free Software Foundation, Inc.
189 dnl   Undisturbed text.
190 EOF
191 rm $TMP*
192
193 ## --------------- ##
194 ## Widest prefix.  ##
195 ## --------------- ##
196
197 TMP=$TMP_BASE-widest-prefix
198 cat > $TMP <<EOF
199 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
200 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
201 #### 2008 Free Software Foundation, Inc.
202 EOF
203 UPDATE_COPYRIGHT_YEAR=2010 \
204   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
205 compare /dev/null $TMP-stdout || exit 1
206 compare /dev/null $TMP-stderr || exit 1
207 compare - $TMP <<EOF || exit 1
208 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
209 #### 1985, 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
210 #### 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
211 EOF
212 rm $TMP*
213
214 ## ------------------- ##
215 ## Prefix too large.  ##
216 ## ------------------- ##
217
218 TMP=$TMP_BASE-prefix-too-large
219 cat > $TMP <<EOF
220 ####  Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
221 ####  1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
222 ####  2008 Free Software Foundation, Inc.
223 EOF
224 UPDATE_COPYRIGHT_YEAR=2010 \
225   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
226 compare /dev/null $TMP-stdout || exit 1
227 compare - $TMP-stderr <<EOF || exit 1
228 $TMP: warning: FSF copyright statement not found
229 EOF
230 compare - $TMP <<EOF || exit 1
231 ####  Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
232 ####  1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
233 ####  2008 Free Software Foundation, Inc.
234 EOF
235 rm $TMP*
236
237 ## ------------- ##
238 ## Blank lines.  ##
239 ## ------------- ##
240
241 TMP=$TMP_BASE-blank-lines
242 cat > $TMP <<EOF
243 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
244 #
245 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
246 #2008 Free Software Foundation, Inc.
247
248 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
249
250 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
251 2008 Free Software Foundation, Inc.
252 EOF
253 UPDATE_COPYRIGHT_YEAR=2010 \
254   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
255 compare /dev/null $TMP-stdout || exit 1
256 compare - $TMP-stderr <<EOF || exit 1
257 $TMP: warning: FSF copyright statement not found
258 EOF
259 compare - $TMP <<EOF || exit 1
260 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
261 #
262 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
263 #2008 Free Software Foundation, Inc.
264
265 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
266
267 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
268 2008 Free Software Foundation, Inc.
269 EOF
270 rm $TMP*
271
272 ## -------------- ##
273 ## Leading tabs.  ##
274 ## -------------- ##
275
276 TMP=$TMP_BASE-leading-tabs
277 cat > $TMP <<EOF
278         Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
279          1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
280         Software Foundation, Inc.
281 EOF
282 UPDATE_COPYRIGHT_YEAR=2010 \
283   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
284 compare /dev/null $TMP-stdout || exit 1
285 compare /dev/null $TMP-stderr || exit 1
286 compare - $TMP <<EOF || exit 1
287         Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
288         98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
289         2009-2010 Free Software Foundation, Inc.
290 EOF
291 rm $TMP*
292
293 ## -------------------- ##
294 ## Unusual whitespace.  ##
295 ## -------------------- ##
296
297 TMP=$TMP_BASE-unusual-ws
298 cat > $TMP <<EOF
299                 # Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
300                 # 98, 1999, 2000, 2001, 2002, 2003,             \f         2004, 2005, 2006, 2007, 2008,
301                 # 2009 Free Software Foundation, Inc.
302 EOF
303 UPDATE_COPYRIGHT_YEAR=2010 \
304   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
305 compare /dev/null $TMP-stdout || exit 1
306 compare /dev/null $TMP-stderr || exit 1
307 compare - $TMP <<EOF || exit 1
308                 # Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995,
309                 # 1996, 1997, 98, 1999, 2000, 2001, 2002, 2003, 2004,
310                 # 2005, 2006, 2007, 2008, 2009-2010 Free Software
311                 # Foundation, Inc.
312 EOF
313 rm $TMP*
314
315 ## --------- ##
316 ## DOS EOL.  ##
317 ## --------- ##
318
319 TMP=$TMP_BASE-dos-eol
320 tr @ '\015' > $TMP <<\EOF
321 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,@
322 Rem 98, 1999, 2000, 2001, 2002, 2003,  2004, 2005, 2006, 2007, 2008,@
323 Rem 2009 Free Software Foundation, Inc.@
324 EOF
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 /dev/null $TMP-stderr || exit 1
329 tr @ '\015' > $TMP-exp <<\EOF
330 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,@
331 Rem 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,@
332 Rem 2009-2010 Free Software Foundation, Inc.@
333 EOF
334 compare $TMP-exp $TMP || exit 1
335 rm $TMP*
336
337 ## --------------- ##
338 ## Omitted "(C)".  ##
339 ## --------------- ##
340
341 TMP=$TMP_BASE-omitted-circle-c
342 cat > $TMP <<EOF
343   Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
344   98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
345   2009 Free Software Foundation, Inc.
346 EOF
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 /dev/null $TMP-stderr || exit 1
351 compare - $TMP <<EOF || exit 1
352   Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98, 1999,
353   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009-2010 Free
354   Software Foundation, Inc.
355 EOF
356 rm $TMP*
357
358 ## ------------------ ##
359 ## C-style comments.  ##
360 ## ------------------ ##
361
362 TMP=$TMP_BASE-c-style-comments
363 cat > $TMP.star <<EOF
364 /*  Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
365  *  98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
366  *  2009 Free Software Foundation, Inc.  */
367 EOF
368 cat > $TMP.space <<EOF
369   /*Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
370     98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
371     2009 Free Software Foundation, Inc.  */
372 EOF
373 cat > $TMP.single-line <<EOF
374 /* Copyright 87, 88, 1991, 1992 Free Software Foundation, Inc.  */
375 EOF
376 cat > $TMP.single-line-wrapped <<EOF
377  /* Copyright 1988, 1991, 1992, 1993 Free Software Foundation, Inc.  */
378 EOF
379 cat > $TMP.extra-text-star <<EOF
380  /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc.  End
381   * More comments.  */
382 EOF
383 cat > $TMP.extra-text-space <<EOF
384  /* Copyright 1987, 1988, 1991, 1992 Free Software Foundation, Inc. ***
385     * End of comments. */
386 EOF
387 UPDATE_COPYRIGHT_YEAR=2010 \
388   update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
389 compare /dev/null $TMP-stdout || exit 1
390 compare /dev/null $TMP-stderr || exit 1
391 compare - $TMP.star <<EOF || exit 1
392 /*  Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
393  *  1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
394  *  2009-2010 Free Software Foundation, Inc.  */
395 EOF
396 compare - $TMP.space <<EOF || exit 1
397   /*Copyright 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
398     1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
399     2009-2010 Free Software Foundation, Inc.  */
400 EOF
401 compare - $TMP.single-line <<EOF || exit 1
402 /* Copyright 87, 88, 1991, 1992, 2010 Free Software Foundation, Inc.  */
403 EOF
404 compare - $TMP.single-line-wrapped <<EOF || exit 1
405  /* Copyright 1988, 1991, 1992, 1993, 2010 Free Software Foundation,
406   * Inc.  */
407 EOF
408 compare - $TMP.extra-text-star <<EOF || exit 1
409  /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
410   * Inc.  End
411   * More comments.  */
412 EOF
413 compare - $TMP.extra-text-space <<EOF || exit 1
414  /* Copyright 1987, 1988, 1991, 1992, 2010 Free Software Foundation,
415     Inc. ***
416     * End of comments. */
417 EOF
418 rm $TMP*
419
420 exit 0