Win32 portability in runtest.py tests after disabling QMTest by default.
[scons.git] / test / runtest / fallback.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 Test that runtest.py falls back (with a warning) using --noqmtest
29 if it can't find qmtest on the $PATH.
30 """
31
32 import os
33 import string
34
35 import TestRuntest
36
37 pythonstring = TestRuntest.pythonstring
38
39 test = TestRuntest.TestRuntest(noqmtest=1)
40
41 # qmtest may be in more than one location in your path
42 while test.where_is('qmtest'):
43     qmtest=test.where_is('qmtest')
44     dir = os.path.split(qmtest)[0]
45     path = string.split(os.environ['PATH'], os.pathsep)
46     path.remove(dir)
47     os.environ['PATH'] = string.join(path, os.pathsep)
48
49 test.subdir('test')
50
51 test_fail_py      = os.path.join('test', 'fail.py')
52 test_no_result_py = os.path.join('test', 'no_result.py')
53 test_pass_py      = os.path.join('test', 'pass.py')
54
55 test.write_failing_test(test_fail_py)
56 test.write_no_result_test(test_no_result_py)
57 test.write_passing_test(test_pass_py)
58
59 expect_stdout = """\
60 %(pythonstring)s -tt %(test_fail_py)s
61 FAILING TEST STDOUT
62 %(pythonstring)s -tt %(test_no_result_py)s
63 NO RESULT TEST STDOUT
64 %(pythonstring)s -tt %(test_pass_py)s
65 PASSING TEST STDOUT
66
67 Failed the following test:
68 \t%(test_fail_py)s
69
70 NO RESULT from the following test:
71 \t%(test_no_result_py)s
72 """ % locals()
73
74 expect_stderr = """\
75 FAILING TEST STDERR
76 NO RESULT TEST STDERR
77 PASSING TEST STDERR
78 """
79
80 testlist = [
81     test_fail_py,
82     test_no_result_py,
83     test_pass_py,
84 ]
85
86 test.run(arguments = string.join(testlist),
87          status = 1,
88          stdout = expect_stdout,
89          stderr = expect_stderr)
90
91 test.pass_test()
92
93 # Local Variables:
94 # tab-width:4
95 # indent-tabs-mode:nil
96 # End:
97 # vim: set expandtab tabstop=4 shiftwidth=4: