Add a --debug=findlibs option. (Gary Oberbrunner)
[scons.git] / test / option / debug-findlibs.py
1 #!/usr/bin/env python
2 #
3 # __COPYRIGHT__
4 #
5 # Permission is hereby granted, free of charge, to any person obtaining
6 # a copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish,
9 # distribute, sublicense, and/or sell copies of the Software, and to
10 # permit persons to whom the Software is furnished to do so, subject to
11 # the following conditions:
12 #
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
17 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 #
24
25 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
26
27 import TestSCons
28 import sys
29 import string
30 import re
31 import time
32
33 test = TestSCons.TestSCons()
34
35 test.subdir('sub1', 'sub2')
36
37 test.write('cat.py', """\
38 import sys
39 ofp = open(sys.argv[1], "w")
40 for ifp in map(open, sys.argv[2:]):
41     ofp.write(ifp.read())
42 ofp.close()
43 """)
44
45 test.write('SConstruct', """\
46 env = Environment(OBJSUFFIX = '.ooo', PROGSUFFIX = '.xxx',
47                   LIBPATH = ['sub1', 'sub2', '.'],
48                   LIBS = ['iii', 'jjj', 'kkk', 'lll', 'mmm'],
49                   LIBPREFIXES = ['a-', 'b-', 'c-'],
50                   LIBSUFFIXES = ['.aaa', '.bbb', '.ccc'],
51                   LINKCOM = '%(python)s cat.py $TARGET $SOURCES')
52 env.Program('foo', 'a.ooo',)
53 """ % {'python' : TestSCons.python})
54
55 test.write('a.ooo', "a.ooo\n")
56
57 test.write('a-iii.aaa', "a-iii.aaa\n")
58 test.write(['sub1', 'b-jjj.bbb'], "b-jjj.bbb\n")
59 test.write(['sub2', 'c-kkk.ccc'], "c-kkk.ccc\n")
60 test.write('a-lll.ccc', "a-lll.ccc\n")
61
62 test.run(arguments = "--debug=findlibs foo.xxx",
63          stdout = test.wrap_stdout("""\
64   findlibs: looking for 'a-iii.aaa' in 'sub1' ...
65   findlibs: looking for 'a-iii.aaa' in 'sub2' ...
66   findlibs: looking for 'a-iii.aaa' in '.' ...
67   findlibs: ... FOUND 'a-iii.aaa' in '.'
68   findlibs: looking for 'b-iii.aaa' in 'sub1' ...
69   findlibs: looking for 'b-iii.aaa' in 'sub2' ...
70   findlibs: looking for 'b-iii.aaa' in '.' ...
71   findlibs: looking for 'c-iii.aaa' in 'sub1' ...
72   findlibs: looking for 'c-iii.aaa' in 'sub2' ...
73   findlibs: looking for 'c-iii.aaa' in '.' ...
74   findlibs: looking for 'a-iii.bbb' in 'sub1' ...
75   findlibs: looking for 'a-iii.bbb' in 'sub2' ...
76   findlibs: looking for 'a-iii.bbb' in '.' ...
77   findlibs: looking for 'b-iii.bbb' in 'sub1' ...
78   findlibs: looking for 'b-iii.bbb' in 'sub2' ...
79   findlibs: looking for 'b-iii.bbb' in '.' ...
80   findlibs: looking for 'c-iii.bbb' in 'sub1' ...
81   findlibs: looking for 'c-iii.bbb' in 'sub2' ...
82   findlibs: looking for 'c-iii.bbb' in '.' ...
83   findlibs: looking for 'a-iii.ccc' in 'sub1' ...
84   findlibs: looking for 'a-iii.ccc' in 'sub2' ...
85   findlibs: looking for 'a-iii.ccc' in '.' ...
86   findlibs: looking for 'b-iii.ccc' in 'sub1' ...
87   findlibs: looking for 'b-iii.ccc' in 'sub2' ...
88   findlibs: looking for 'b-iii.ccc' in '.' ...
89   findlibs: looking for 'c-iii.ccc' in 'sub1' ...
90   findlibs: looking for 'c-iii.ccc' in 'sub2' ...
91   findlibs: looking for 'c-iii.ccc' in '.' ...
92   findlibs: looking for 'a-jjj.aaa' in 'sub1' ...
93   findlibs: looking for 'a-jjj.aaa' in 'sub2' ...
94   findlibs: looking for 'a-jjj.aaa' in '.' ...
95   findlibs: looking for 'b-jjj.aaa' in 'sub1' ...
96   findlibs: looking for 'b-jjj.aaa' in 'sub2' ...
97   findlibs: looking for 'b-jjj.aaa' in '.' ...
98   findlibs: looking for 'c-jjj.aaa' in 'sub1' ...
99   findlibs: looking for 'c-jjj.aaa' in 'sub2' ...
100   findlibs: looking for 'c-jjj.aaa' in '.' ...
101   findlibs: looking for 'a-jjj.bbb' in 'sub1' ...
102   findlibs: looking for 'a-jjj.bbb' in 'sub2' ...
103   findlibs: looking for 'a-jjj.bbb' in '.' ...
104   findlibs: looking for 'b-jjj.bbb' in 'sub1' ...
105   findlibs: ... FOUND 'b-jjj.bbb' in 'sub1'
106   findlibs: looking for 'c-jjj.bbb' in 'sub1' ...
107   findlibs: looking for 'c-jjj.bbb' in 'sub2' ...
108   findlibs: looking for 'c-jjj.bbb' in '.' ...
109   findlibs: looking for 'a-jjj.ccc' in 'sub1' ...
110   findlibs: looking for 'a-jjj.ccc' in 'sub2' ...
111   findlibs: looking for 'a-jjj.ccc' in '.' ...
112   findlibs: looking for 'b-jjj.ccc' in 'sub1' ...
113   findlibs: looking for 'b-jjj.ccc' in 'sub2' ...
114   findlibs: looking for 'b-jjj.ccc' in '.' ...
115   findlibs: looking for 'c-jjj.ccc' in 'sub1' ...
116   findlibs: looking for 'c-jjj.ccc' in 'sub2' ...
117   findlibs: looking for 'c-jjj.ccc' in '.' ...
118   findlibs: looking for 'a-kkk.aaa' in 'sub1' ...
119   findlibs: looking for 'a-kkk.aaa' in 'sub2' ...
120   findlibs: looking for 'a-kkk.aaa' in '.' ...
121   findlibs: looking for 'b-kkk.aaa' in 'sub1' ...
122   findlibs: looking for 'b-kkk.aaa' in 'sub2' ...
123   findlibs: looking for 'b-kkk.aaa' in '.' ...
124   findlibs: looking for 'c-kkk.aaa' in 'sub1' ...
125   findlibs: looking for 'c-kkk.aaa' in 'sub2' ...
126   findlibs: looking for 'c-kkk.aaa' in '.' ...
127   findlibs: looking for 'a-kkk.bbb' in 'sub1' ...
128   findlibs: looking for 'a-kkk.bbb' in 'sub2' ...
129   findlibs: looking for 'a-kkk.bbb' in '.' ...
130   findlibs: looking for 'b-kkk.bbb' in 'sub1' ...
131   findlibs: looking for 'b-kkk.bbb' in 'sub2' ...
132   findlibs: looking for 'b-kkk.bbb' in '.' ...
133   findlibs: looking for 'c-kkk.bbb' in 'sub1' ...
134   findlibs: looking for 'c-kkk.bbb' in 'sub2' ...
135   findlibs: looking for 'c-kkk.bbb' in '.' ...
136   findlibs: looking for 'a-kkk.ccc' in 'sub1' ...
137   findlibs: looking for 'a-kkk.ccc' in 'sub2' ...
138   findlibs: looking for 'a-kkk.ccc' in '.' ...
139   findlibs: looking for 'b-kkk.ccc' in 'sub1' ...
140   findlibs: looking for 'b-kkk.ccc' in 'sub2' ...
141   findlibs: looking for 'b-kkk.ccc' in '.' ...
142   findlibs: looking for 'c-kkk.ccc' in 'sub1' ...
143   findlibs: looking for 'c-kkk.ccc' in 'sub2' ...
144   findlibs: ... FOUND 'c-kkk.ccc' in 'sub2'
145   findlibs: looking for 'a-lll.aaa' in 'sub1' ...
146   findlibs: looking for 'a-lll.aaa' in 'sub2' ...
147   findlibs: looking for 'a-lll.aaa' in '.' ...
148   findlibs: looking for 'b-lll.aaa' in 'sub1' ...
149   findlibs: looking for 'b-lll.aaa' in 'sub2' ...
150   findlibs: looking for 'b-lll.aaa' in '.' ...
151   findlibs: looking for 'c-lll.aaa' in 'sub1' ...
152   findlibs: looking for 'c-lll.aaa' in 'sub2' ...
153   findlibs: looking for 'c-lll.aaa' in '.' ...
154   findlibs: looking for 'a-lll.bbb' in 'sub1' ...
155   findlibs: looking for 'a-lll.bbb' in 'sub2' ...
156   findlibs: looking for 'a-lll.bbb' in '.' ...
157   findlibs: looking for 'b-lll.bbb' in 'sub1' ...
158   findlibs: looking for 'b-lll.bbb' in 'sub2' ...
159   findlibs: looking for 'b-lll.bbb' in '.' ...
160   findlibs: looking for 'c-lll.bbb' in 'sub1' ...
161   findlibs: looking for 'c-lll.bbb' in 'sub2' ...
162   findlibs: looking for 'c-lll.bbb' in '.' ...
163   findlibs: looking for 'a-lll.ccc' in 'sub1' ...
164   findlibs: looking for 'a-lll.ccc' in 'sub2' ...
165   findlibs: looking for 'a-lll.ccc' in '.' ...
166   findlibs: ... FOUND 'a-lll.ccc' in '.'
167   findlibs: looking for 'b-lll.ccc' in 'sub1' ...
168   findlibs: looking for 'b-lll.ccc' in 'sub2' ...
169   findlibs: looking for 'b-lll.ccc' in '.' ...
170   findlibs: looking for 'c-lll.ccc' in 'sub1' ...
171   findlibs: looking for 'c-lll.ccc' in 'sub2' ...
172   findlibs: looking for 'c-lll.ccc' in '.' ...
173   findlibs: looking for 'a-mmm.aaa' in 'sub1' ...
174   findlibs: looking for 'a-mmm.aaa' in 'sub2' ...
175   findlibs: looking for 'a-mmm.aaa' in '.' ...
176   findlibs: looking for 'b-mmm.aaa' in 'sub1' ...
177   findlibs: looking for 'b-mmm.aaa' in 'sub2' ...
178   findlibs: looking for 'b-mmm.aaa' in '.' ...
179   findlibs: looking for 'c-mmm.aaa' in 'sub1' ...
180   findlibs: looking for 'c-mmm.aaa' in 'sub2' ...
181   findlibs: looking for 'c-mmm.aaa' in '.' ...
182   findlibs: looking for 'a-mmm.bbb' in 'sub1' ...
183   findlibs: looking for 'a-mmm.bbb' in 'sub2' ...
184   findlibs: looking for 'a-mmm.bbb' in '.' ...
185   findlibs: looking for 'b-mmm.bbb' in 'sub1' ...
186   findlibs: looking for 'b-mmm.bbb' in 'sub2' ...
187   findlibs: looking for 'b-mmm.bbb' in '.' ...
188   findlibs: looking for 'c-mmm.bbb' in 'sub1' ...
189   findlibs: looking for 'c-mmm.bbb' in 'sub2' ...
190   findlibs: looking for 'c-mmm.bbb' in '.' ...
191   findlibs: looking for 'a-mmm.ccc' in 'sub1' ...
192   findlibs: looking for 'a-mmm.ccc' in 'sub2' ...
193   findlibs: looking for 'a-mmm.ccc' in '.' ...
194   findlibs: looking for 'b-mmm.ccc' in 'sub1' ...
195   findlibs: looking for 'b-mmm.ccc' in 'sub2' ...
196   findlibs: looking for 'b-mmm.ccc' in '.' ...
197   findlibs: looking for 'c-mmm.ccc' in 'sub1' ...
198   findlibs: looking for 'c-mmm.ccc' in 'sub2' ...
199   findlibs: looking for 'c-mmm.ccc' in '.' ...
200 %(python)s cat.py foo.xxx a.ooo
201 """ % {'python' : TestSCons.python}))
202
203 test.must_match('foo.xxx', "a.ooo\n")
204
205 test.pass_test()