summaryrefslogtreecommitdiff
path: root/t/ac-output-old.tap
blob: d5e17ab786a83b7c5fda5bff82374d8b1fd36f2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#!/bin/sh
# Copyright (C) 1996-2017 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Test for various older bugs related to quoting, escaping and
# line breaking in the use of AC_OUTPUT.  Synthesised by a bunch
# of older tests (referenced below).

. test-init.sh

plan_ 22

rm -f configure.ac depcomp # Not required.

# -----------------------------------------------------------------------

# Test for bug reported by François Pinard.
# If \ is in AC_OUTPUT, automake barfs.
# This was the old test 'acoutbs.test'.

# Also test for bug reported by David A. Swierczek.
# Another bug with \ in AC_OUTPUT (this time with whitespace).
# This was the old test 'acoutbs2.test'.

acoutbs_check ()
{
  dir=acoutbs$1
  mkdir $dir
  cd $dir
  cat > configure.ac
  touch Makefile.am zot.in
  command_ok_ "aclocal groks '\\' in AC_OUTPUT ($dir)" $ACLOCAL
  command_ok_ "automake groks '\\' in AC_OUTPUT ($dir)" $AUTOMAKE
  command_ok_ "autoconf groks '\\' in AC_OUTPUT ($dir)" $AUTOCONF
  command_ok_ "can ./configure in $dir" ./configure
  command_ok_ "zot created in $dir" test -f zot
  ls -a > lst || bailout_ "cannot get file listing in $dir"
  command_ok_ "'\\' not leaked in filenames in $dir" not grep '\\' lst
  cd ..
}

acoutbs_check 1 << 'END'
AC_INIT([acoutbs1], [1.0])
AM_INIT_AUTOMAKE
AC_OUTPUT(Makefile \
zot)
END

acoutbs_check 2 << 'END'
AC_INIT([acoutbs2], [1.0])
AM_INIT_AUTOMAKE
AC_OUTPUT(\
   Makefile \
   zot
)
END

# -----------------------------------------------------------------------

# Test for bug reported by Jerome Santini.
# If I put this line in my configure.ac:
#  AC_OUTPUT(Makefile src/Makefile tests/Makefile, echo timestamp > stamp-h)dnl
# automake is not happy:
#  [ ... ]
# This was the old test 'acoutnoq.test'.

mkdir acoutnoq
cd acoutnoq

cat > configure.ac << 'END'
AC_INIT([acoutnoq], [1.0])
AM_INIT_AUTOMAKE
AC_OUTPUT(Makefile, [true])
END

: > Makefile.am

command_ok_ "aclocal and quoted AC_OUTPUT second argument" $ACLOCAL
command_ok_ "automake and quoted AC_OUTPUT second argument" $AUTOMAKE

cd ..

# -----------------------------------------------------------------------

# Test for bug when AC_OUTPUT has 2 args on the same line, eg:
#   AC_OUTPUT([Makefile automake tests/Makefile],[chmod +x automake])
# This was the old test 'acoutpt.test'.

mkdir acoutpt
cd acoutpt

cat > configure.ac << 'END'
AC_INIT([acoutpt], [1.0])
AM_INIT_AUTOMAKE
AC_OUTPUT([Makefile], [true])
END

: > Makefile.am

command_ok_ "aclocal and two AC_OUTPUT arguments on same line" $ACLOCAL
command_ok_ "automake and two AC_OUTPUT arguments on same line" $AUTOMAKE

cd ..

# -----------------------------------------------------------------------

# Test for bug reported by Eric Magnien.
# This was the old test 'acoutpt2.test'.

mkdir acoutpt2
cd acoutpt2

# Name of the current "subtest".
cur=acoutput2

cat > configure.ac <<END
AC_INIT([$cur], [1.0])
AM_INIT_AUTOMAKE
AC_OUTPUT([subdir/Makefile subdir/foo Makefile foo], [true])
END

mkdir subdir

: > Makefile.am
: > subdir/Makefile.am
: > foo.in
: > subdir/foo.in

command_ok_ "aclocal and AC_OUTPUT ($cur)" $ACLOCAL
command_ok_ "automake and AC_OUTPUT ($cur)" $AUTOMAKE
command_ok_ "foo.in mentioned two times in Makefile.in ($cur)" \
             test $($FGREP -c 'foo.in' Makefile.in) -eq 2

# This ought to work as well.
command_ok_ "'automake -a -f' and AC_OUTPUT ($cur)" \
            $AUTOMAKE --add-missing --force-missing

cd ..

# -----------------------------------------------------------------------

# Test for bug reported by François Pinard.
# This was the old test 'acoutqnl.test'.

mkdir acoutqnl
cd acoutqnl

cat > configure.ac << 'END'
AC_INIT([acoutqnl], [1.0])
AM_INIT_AUTOMAKE
AC_OUTPUT([Makefile],
[echo zardoz has spoken])
END

: > Makefile.am

command_ok_ "aclocal and two AC_OUTPUT arguments on two lines" $ACLOCAL
command_ok_ "automake and two AC_OUTPUT arguments on two lines" $AUTOMAKE

cd ..

# -----------------------------------------------------------------------

# And we're done.
exit 0