http://scons.tigris.org/issues/show_bug.cgi?id=2345
[scons.git] / test / Subst / AllowSubstExceptions.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 """
28 XXX Put a description of the test here.
29 """
30
31 import TestSCons
32
33 test = TestSCons.TestSCons()
34
35 test.write('SConstruct', """\
36 import SCons.Errors
37
38 env = Environment(INDEX = [0, 1])
39
40 assert env.subst('$NAME') == ''
41 assert env.subst('${NAME}') == ''
42 assert env.subst('${INDEX[999]}') == ''
43
44 assert env.subst_list('$NAME') == [[]]
45 assert env.subst_list('${NAME}') == [[]]
46 assert env.subst_list('${INDEX[999]}') == [[]]
47
48 AllowSubstExceptions()
49
50 try: env.subst('$NAME')
51 except SCons.Errors.UserError, e: print e
52 else: raise Exception("did not catch expected SCons.Errors.UserError")
53
54 try: env.subst('${NAME}')
55 except SCons.Errors.UserError, e: print e
56 else: raise Exception("did not catch expected SCons.Errors.UserError")
57
58 try: env.subst('${INDEX[999]}')
59 except SCons.Errors.UserError, e: print e
60 else: raise Exception("did not catch expected SCons.Errors.UserError")
61
62 try: env.subst_list('$NAME')
63 except SCons.Errors.UserError, e: print e
64 else: raise Exception("did not catch expected SCons.Errors.UserError")
65
66 try: env.subst_list('${NAME}')
67 except SCons.Errors.UserError, e: print e
68 else: raise Exception("did not catch expected SCons.Errors.UserError")
69
70 try: env.subst_list('${INDEX[999]}')
71 except SCons.Errors.UserError, e: print e
72 else: raise Exception("did not catch expected SCons.Errors.UserError")
73
74
75
76 try: env.subst('${1/0}')
77 except SCons.Errors.UserError, e: print e
78 else: raise Exception("did not catch expected SCons.Errors.UserError")
79
80 try: env.subst_list('${1/0}')
81 except SCons.Errors.UserError, e: print e
82 else: raise Exception("did not catch expected SCons.Errors.UserError")
83
84 AllowSubstExceptions(ZeroDivisionError)
85
86 assert env.subst('${1/0}') == ''
87 assert env.subst_list('${1/0}') == [[]]
88 """)
89
90 test.run()
91 #print test.stdout()
92
93 test.pass_test()
94
95 # Local Variables:
96 # tab-width:4
97 # indent-tabs-mode:nil
98 # End:
99 # vim: set expandtab tabstop=4 shiftwidth=4: