Merge branch 'master' into perf/env-setitem
[scons.git] / test / SConscript / Return.py
blobdcbedee2a1bca49a51797378e9df2a9b846512f3
1 #!/usr/bin/env python
3 # __COPYRIGHT__
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:
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
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.
25 __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__"
27 """
28 Verify that the Return() function stops processing the SConscript file
29 at the point is called, unless the stop= keyword argument is supplied.
30 """
32 import TestSCons
34 test = TestSCons.TestSCons()
36 test.write('SConstruct', """\
37 SConscript('SConscript1')
38 x = SConscript('SConscript2')
39 y, z = SConscript('SConscript3')
40 a4, b4 = SConscript('SConscript4')
41 foo, bar = SConscript('SConscript5')
42 for var in ['x','y','z','a4','b4','foo','bar']:
43 print("%s = %s"%(var,globals()[var]))
44 """)
46 test.write('SConscript1', """\
47 print("line 1")
48 Return()
49 print("line 2")
50 """)
52 test.write('SConscript2', """\
53 print("line 3")
54 x = 7
55 Return('x')
56 print("line 4")
57 """)
59 test.write('SConscript3', """\
60 print("line 5")
61 y = 8
62 z = 9
63 Return('y z')
64 print("line 6")
65 """)
67 test.write('SConscript4', """\
68 a4 = 'aaa'
69 b4 = 'bbb'
70 print("line 7")
71 Return('a4', 'b4', stop=False)
72 b4 = 'b-after'
73 print("line 8")
74 """)
76 test.write('SConscript5', """\
77 foo = 'foo'
78 bar = 'bar'
79 Return(["foo", "bar"])
80 print("line 9")
81 """)
83 expect = """\
84 line 1
85 line 3
86 line 5
87 line 7
88 line 8
89 x = 7
90 y = 8
91 z = 9
92 a4 = aaa
93 b4 = bbb
94 foo = foo
95 bar = bar
96 """
98 test.run(arguments = '-q -Q', stdout=expect)
100 test.pass_test()
102 # Local Variables:
103 # tab-width:4
104 # indent-tabs-mode:nil
105 # End:
106 # vim: set expandtab tabstop=4 shiftwidth=4: