maint.mk: make update-copyright exclusion list more configurable
[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 TMP_BASE=update-copyright.test
20
21 ## ----------------------------- ##
22 ## Examples from documentation.  ##
23 ## ----------------------------- ##
24
25 TMP=$TMP_BASE-ex
26 cat > $TMP.1 <<EOF
27 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
28 Inc.
29 EOF
30 cat > $TMP.2 <<EOF
31 # Copyright (c) 1990-2005, 2007-2009 Free Software
32 # Foundation, Inc.
33 EOF
34 cat > $TMP.3 <<EOF
35 /*
36  * Copyright (C) 90,2005,2007-2009 Free Software
37  * Foundation, Inc.
38  */
39 EOF
40 cat > $TMP.4 <<EOF
41 /* Copyright (C) 1990-2005, 2007-2009 Free Software
42  * Foundation, Inc.  */
43
44 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
45 Inc.
46 EOF
47 cat > $TMP.5 <<EOF
48 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
49
50 # Copyright (C) 1990-2005, 2007-2009 Free Software
51 # Foundation, Inc.
52 EOF
53
54 UPDATE_COPYRIGHT_YEAR=2009 \
55   update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
56 diff -u /dev/null $TMP-stdout || exit 1
57 diff -u - $TMP-stderr <<EOF || exit 1
58 $TMP.4: warning: FSF copyright statement not found
59 $TMP.5: warning: FSF copyright statement not found
60 EOF
61 diff -u - $TMP.1 <<EOF || exit 1
62 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
63 Inc.
64 EOF
65 diff -u - $TMP.2 <<EOF || exit 1
66 # Copyright (c) 1990-2005, 2007-2009 Free Software
67 # Foundation, Inc.
68 EOF
69 diff -u - $TMP.3 <<EOF || exit 1
70 /*
71  * Copyright (C) 90,2005,2007-2009 Free Software
72  * Foundation, Inc.
73  */
74 EOF
75 diff -u - $TMP.4 <<EOF || exit 1
76 /* Copyright (C) 1990-2005, 2007-2009 Free Software
77  * Foundation, Inc.  */
78
79 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
80 Inc.
81 EOF
82 diff -u - $TMP.5 <<EOF || exit 1
83 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
84
85 # Copyright (C) 1990-2005, 2007-2009 Free Software
86 # Foundation, Inc.
87 EOF
88
89 UPDATE_COPYRIGHT_YEAR=2010 \
90   update-copyright $TMP.* 1> $TMP-stdout 2> $TMP-stderr
91 diff -u /dev/null $TMP-stdout || exit 1
92 diff -u - $TMP-stderr <<EOF || exit 1
93 $TMP.4: warning: FSF copyright statement not found
94 $TMP.5: warning: FSF copyright statement not found
95 EOF
96 diff -u - $TMP.1 <<EOF || exit 1
97 Copyright (C) 1990-2005, 2007-2010 Free Software Foundation, Inc.
98 EOF
99 diff -u - $TMP.2 <<EOF || exit 1
100 # Copyright (c) 1990-2005, 2007-2010 Free Software Foundation, Inc.
101 EOF
102 diff -u - $TMP.3 <<EOF || exit 1
103 /*
104  * Copyright (C) 90, 2005, 2007-2010 Free Software Foundation, Inc.
105  */
106 EOF
107 diff -u - $TMP.4 <<EOF || exit 1
108 /* Copyright (C) 1990-2005, 2007-2009 Free Software
109  * Foundation, Inc.  */
110
111 Copyright (C) 1990-2005, 2007-2009 Free Software Foundation,
112 Inc.
113 EOF
114 diff -u - $TMP.5 <<EOF || exit 1
115 Copyright (C) 1990-2005, 2007-2009 Acme, Inc.
116
117 # Copyright (C) 1990-2005, 2007-2009 Free Software
118 # Foundation, Inc.
119 EOF
120
121 rm $TMP*
122
123 ## -------------- ##
124 ## Current year.  ##
125 ## -------------- ##
126
127 TMP=$TMP_BASE-current-year
128 YEAR=`/usr/bin/perl -e 'print [localtime]->[5] + 1900'`;
129 cat > $TMP <<EOF
130 '\" Copyright (C) 2006
131 '\" Free Software Foundation,
132 '\" Inc.
133 EOF
134 update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
135 diff -u /dev/null $TMP-stdout || exit 1
136 diff -u /dev/null $TMP-stderr || exit 1
137 diff -u - $TMP <<EOF || exit 1
138 '\" Copyright (C) 2006, $YEAR Free Software Foundation, Inc.
139 EOF
140 rm $TMP*
141
142 ## ------------------ ##
143 ## Surrounding text.  ##
144 ## ------------------ ##
145
146 TMP=$TMP_BASE-surrounding-text
147 cat > $TMP <<EOF
148     Undisturbed text.
149 dnl Undisturbed text.
150 dnl Copyright (C) 89
151 dnl Free Software Foundation, Inc.
152 dnl   Undisturbed text.
153 EOF
154 UPDATE_COPYRIGHT_YEAR=2010 \
155   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
156 diff -u /dev/null $TMP-stdout || exit 1
157 diff -u /dev/null $TMP-stderr || exit 1
158 diff -u - $TMP <<EOF || exit 1
159     Undisturbed text.
160 dnl Undisturbed text.
161 dnl Copyright (C) 1989, 2010 Free Software Foundation, Inc.
162 dnl   Undisturbed text.
163 EOF
164 rm $TMP*
165
166 ## --------------- ##
167 ## Widest prefix.  ##
168 ## --------------- ##
169
170 TMP=$TMP_BASE-widest-prefix
171 cat > $TMP <<EOF
172 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
173 #### 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
174 #### 2008 Free Software Foundation, Inc.
175 EOF
176 UPDATE_COPYRIGHT_YEAR=2010 \
177   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
178 diff -u /dev/null $TMP-stdout || exit 1
179 diff -u /dev/null $TMP-stderr || exit 1
180 diff -u - $TMP <<EOF || exit 1
181 #### Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984,
182 #### 1985, 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
183 #### 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
184 EOF
185 rm $TMP*
186
187 ## ------------------- ##
188 ## Prefix too large.  ##
189 ## ------------------- ##
190
191 TMP=$TMP_BASE-prefix-too-large
192 cat > $TMP <<EOF
193 ####  Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
194 ####  1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
195 ####  2008 Free Software Foundation, Inc.
196 EOF
197 UPDATE_COPYRIGHT_YEAR=2010 \
198   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
199 diff -u /dev/null $TMP-stdout || exit 1
200 diff -u - $TMP-stderr <<EOF || exit 1
201 $TMP: warning: FSF copyright statement not found
202 EOF
203 diff -u - $TMP <<EOF || exit 1
204 ####  Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
205 ####  1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
206 ####  2008 Free Software Foundation, Inc.
207 EOF
208 rm $TMP*
209
210 ## ------------- ##
211 ## Blank lines.  ##
212 ## ------------- ##
213
214 TMP=$TMP_BASE-blank-lines
215 cat > $TMP <<EOF
216 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
217 #
218 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
219 #2008 Free Software Foundation, Inc.
220
221 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
222
223 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
224 2008 Free Software Foundation, Inc.
225 EOF
226 UPDATE_COPYRIGHT_YEAR=2010 \
227   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
228 diff -u /dev/null $TMP-stdout || exit 1
229 diff -u - $TMP-stderr <<EOF || exit 1
230 $TMP: warning: FSF copyright statement not found
231 EOF
232 diff -u - $TMP <<EOF || exit 1
233 #Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
234 #
235 #1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
236 #2008 Free Software Foundation, Inc.
237
238 Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985,
239
240 1986, 1987, 1988, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
241 2008 Free Software Foundation, Inc.
242 EOF
243 rm $TMP*
244
245 ## -------------- ##
246 ## Leading tabs.  ##
247 ## -------------- ##
248
249 TMP=$TMP_BASE-leading-tabs
250 cat > $TMP <<EOF
251         Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
252          1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free
253         Software Foundation, Inc.
254 EOF
255 UPDATE_COPYRIGHT_YEAR=2010 \
256   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
257 diff -u /dev/null $TMP-stdout || exit 1
258 diff -u /dev/null $TMP-stderr || exit 1
259 diff -u - $TMP <<EOF || exit 1
260         Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
261         98, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
262         2009-2010 Free Software Foundation, Inc.
263 EOF
264 rm $TMP*
265
266 ## -------------------- ##
267 ## Unusual whitespace.  ##
268 ## -------------------- ##
269
270 TMP=$TMP_BASE-unusual-ws
271 cat > $TMP <<EOF
272                 # Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
273                 # 98, 1999, 2000, 2001, 2002, 2003,             \f         2004, 2005, 2006, 2007, 2008,
274                 # 2009 Free Software Foundation, Inc.
275 EOF
276 UPDATE_COPYRIGHT_YEAR=2010 \
277   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
278 diff -u /dev/null $TMP-stdout || exit 1
279 diff -u /dev/null $TMP-stderr || exit 1
280 diff -u - $TMP <<EOF || exit 1
281                 # Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995,
282                 # 1996, 1997, 98, 1999, 2000, 2001, 2002, 2003, 2004,
283                 # 2005, 2006, 2007, 2008, 2009-2010 Free Software
284                 # Foundation, Inc.
285 EOF
286 rm $TMP*
287
288 ## --------- ##
289 ## DOS EOL.  ##
290 ## --------- ##
291
292 TMP=$TMP_BASE-dos-eol
293 cat > $TMP <<EOF
294 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
295 Rem 98, 1999, 2000, 2001, 2002, 2003,  2004, 2005, 2006, 2007, 2008,
296 Rem 2009 Free Software Foundation, Inc.
297 EOF
298 UPDATE_COPYRIGHT_YEAR=2010 \
299   update-copyright $TMP 1> $TMP-stdout 2> $TMP-stderr
300 diff -u /dev/null $TMP-stdout || exit 1
301 diff -u /dev/null $TMP-stderr || exit 1
302 diff -u - $TMP <<EOF || exit 1
303 Rem Copyright (C) 87, 88, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 98,
304 Rem 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
305 Rem 2009-2010 Free Software Foundation, Inc.
306 EOF
307 rm $TMP*
308
309 exit 0