##// END OF EJS Templates
Tidyups for run-tests.py inc. try/finally cleanup and allow tests to be specified on command line
Stephen Darnell -
r2133:4334be19 default
parent child Browse files
Show More
@@ -40,6 +40,7 b' def find_program(program):'
40 return name
40 return name
41 return None
41 return None
42
42
43 def check_required_tools():
43 # Before we go any further, check for pre-requisite tools
44 # Before we go any further, check for pre-requisite tools
44 # stuff from coreutils (cat, rm, etc) are not tested
45 # stuff from coreutils (cat, rm, etc) are not tested
45 for p in required_tools:
46 for p in required_tools:
@@ -51,28 +52,12 b' for p in required_tools:'
51 else:
52 else:
52 print "WARNING: Did not find prerequisite tool: "+p
53 print "WARNING: Did not find prerequisite tool: "+p
53
54
54 # Reset some environment variables to well-known values
55 os.environ['LANG'] = os.environ['LC_ALL'] = 'C'
56 os.environ['TZ'] = 'GMT'
57
58 os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"'
59 os.environ["HGMERGE"] = sys.executable + ' -c "import sys; sys.exit(0)"'
60 os.environ["HGUSER"] = "test"
61 os.environ["HGRCPATH"] = ""
62
63 TESTDIR = os.environ["TESTDIR"] = os.getcwd()
64 HGTMP = os.environ["HGTMP"] = tempfile.mkdtemp("", "hgtests.")
65
66 def cleanup_exit():
55 def cleanup_exit():
67 if verbose:
56 if verbose:
68 print "# Cleaning up HGTMP", HGTMP
57 print "# Cleaning up HGTMP", HGTMP
69 shutil.rmtree(HGTMP, True)
58 shutil.rmtree(HGTMP, True)
70
59
71 vlog("# Using TESTDIR", TESTDIR)
60 def install_hg():
72 vlog("# Using HGTMP", HGTMP)
73
74 os.umask(022)
75
76 vlog("# Performing temporary installation of HG")
61 vlog("# Performing temporary installation of HG")
77 INST = os.path.join(HGTMP, "install")
62 INST = os.path.join(HGTMP, "install")
78 BINDIR = os.path.join(INST, "bin")
63 BINDIR = os.path.join(INST, "bin")
@@ -91,16 +76,12 b' else:'
91 for line in f:
76 for line in f:
92 print line,
77 print line,
93 f.close()
78 f.close()
94 cleanup_exit()
95 sys.exit(1)
79 sys.exit(1)
96 os.chdir(TESTDIR)
80 os.chdir(TESTDIR)
97
81
98 os.environ["PATH"] = "%s%s%s" % (BINDIR, os.pathsep, os.environ["PATH"])
82 os.environ["PATH"] = "%s%s%s" % (BINDIR, os.pathsep, os.environ["PATH"])
99 os.environ["PYTHONPATH"] = PYTHONDIR
83 os.environ["PYTHONPATH"] = PYTHONDIR
100
84
101 tests = 0
102 failed = 0
103
104 def run(cmd, split_lines=True):
85 def run(cmd, split_lines=True):
105 """Run command in a sub-process, capturing the output (stdout and stderr).
86 """Run command in a sub-process, capturing the output (stdout and stderr).
106 Return the exist code, and output."""
87 Return the exist code, and output."""
@@ -176,7 +157,35 b' def run_one(test):'
176 shutil.rmtree(tmpd, True)
157 shutil.rmtree(tmpd, True)
177 return ret == 0
158 return ret == 0
178
159
179 for test in os.listdir("."):
160
161 os.umask(022)
162
163 check_required_tools()
164
165 # Reset some environment variables to well-known values so that
166 # the tests produce repeatable output.
167 os.environ['LANG'] = os.environ['LC_ALL'] = 'C'
168 os.environ['TZ'] = 'GMT'
169
170 os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"'
171 os.environ["HGMERGE"] = sys.executable + ' -c "import sys; sys.exit(0)"'
172 os.environ["HGUSER"] = "test"
173 os.environ["HGRCPATH"] = ""
174
175 TESTDIR = os.environ["TESTDIR"] = os.getcwd()
176 HGTMP = os.environ["HGTMP"] = tempfile.mkdtemp("", "hgtests.")
177 vlog("# Using TESTDIR", TESTDIR)
178 vlog("# Using HGTMP", HGTMP)
179
180 try:
181 install_hg()
182
183 tests = 0
184 failed = 0
185
186 if len(args) == 0:
187 args = os.listdir(".")
188 for test in args:
180 if test.startswith("test-"):
189 if test.startswith("test-"):
181 if '~' in test or re.search(r'\.(out|err)$', test):
190 if '~' in test or re.search(r'\.(out|err)$', test):
182 continue
191 continue
@@ -184,8 +193,8 b' for test in os.listdir("."):'
184 failed += 1
193 failed += 1
185 tests += 1
194 tests += 1
186
195
187 print "# Ran %d tests, %d failed." % (tests, failed)
196 print "\n# Ran %d tests, %d failed." % (tests, failed)
188
197 finally:
189 cleanup_exit()
198 cleanup_exit()
190
199
191 if failed:
200 if failed:
General Comments 0
You need to be logged in to leave comments. Login now