##// 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,66 +40,47 b' def find_program(program):'
40 40 return name
41 41 return None
42 42
43 # Before we go any further, check for pre-requisite tools
44 # stuff from coreutils (cat, rm, etc) are not tested
45 for p in required_tools:
46 if os.name == 'nt':
47 p += '.exe'
48 found = find_program(p)
49 if found:
50 vlog("# Found prerequisite", p, "at", found)
51 else:
52 print "WARNING: Did not find prerequisite tool: "+p
53
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.")
43 def check_required_tools():
44 # Before we go any further, check for pre-requisite tools
45 # stuff from coreutils (cat, rm, etc) are not tested
46 for p in required_tools:
47 if os.name == 'nt':
48 p += '.exe'
49 found = find_program(p)
50 if found:
51 vlog("# Found prerequisite", p, "at", found)
52 else:
53 print "WARNING: Did not find prerequisite tool: "+p
65 54
66 55 def cleanup_exit():
67 56 if verbose:
68 57 print "# Cleaning up HGTMP", HGTMP
69 58 shutil.rmtree(HGTMP, True)
70 59
71 vlog("# Using TESTDIR", TESTDIR)
72 vlog("# Using HGTMP", HGTMP)
73
74 os.umask(022)
75
76 vlog("# Performing temporary installation of HG")
77 INST = os.path.join(HGTMP, "install")
78 BINDIR = os.path.join(INST, "bin")
79 PYTHONDIR = os.path.join(INST, "lib", "python")
80 installerrs = os.path.join("tests", "install.err")
60 def install_hg():
61 vlog("# Performing temporary installation of HG")
62 INST = os.path.join(HGTMP, "install")
63 BINDIR = os.path.join(INST, "bin")
64 PYTHONDIR = os.path.join(INST, "lib", "python")
65 installerrs = os.path.join("tests", "install.err")
81 66
82 os.chdir("..") # Get back to hg root
83 cmd = '%s setup.py install --home="%s" --install-lib="%s" >%s 2>&1' % \
84 (sys.executable, INST, PYTHONDIR, installerrs)
85 vlog("# Running", cmd)
86 if os.system(cmd) == 0:
87 if not verbose:
88 os.remove(installerrs)
89 else:
90 f = open(installerrs)
91 for line in f:
92 print line,
93 f.close()
94 cleanup_exit()
95 sys.exit(1)
96 os.chdir(TESTDIR)
67 os.chdir("..") # Get back to hg root
68 cmd = '%s setup.py install --home="%s" --install-lib="%s" >%s 2>&1' % \
69 (sys.executable, INST, PYTHONDIR, installerrs)
70 vlog("# Running", cmd)
71 if os.system(cmd) == 0:
72 if not verbose:
73 os.remove(installerrs)
74 else:
75 f = open(installerrs)
76 for line in f:
77 print line,
78 f.close()
79 sys.exit(1)
80 os.chdir(TESTDIR)
97 81
98 os.environ["PATH"] = "%s%s%s" % (BINDIR, os.pathsep, os.environ["PATH"])
99 os.environ["PYTHONPATH"] = PYTHONDIR
100
101 tests = 0
102 failed = 0
82 os.environ["PATH"] = "%s%s%s" % (BINDIR, os.pathsep, os.environ["PATH"])
83 os.environ["PYTHONPATH"] = PYTHONDIR
103 84
104 85 def run(cmd, split_lines=True):
105 86 """Run command in a sub-process, capturing the output (stdout and stderr).
@@ -176,17 +157,45 b' def run_one(test):'
176 157 shutil.rmtree(tmpd, True)
177 158 return ret == 0
178 159
179 for test in os.listdir("."):
180 if test.startswith("test-"):
181 if '~' in test or re.search(r'\.(out|err)$', test):
182 continue
183 if not run_one(test):
184 failed += 1
185 tests += 1
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)
186 179
187 print "# Ran %d tests, %d failed." % (tests, failed)
180 try:
181 install_hg()
182
183 tests = 0
184 failed = 0
188 185
189 cleanup_exit()
186 if len(args) == 0:
187 args = os.listdir(".")
188 for test in args:
189 if test.startswith("test-"):
190 if '~' in test or re.search(r'\.(out|err)$', test):
191 continue
192 if not run_one(test):
193 failed += 1
194 tests += 1
195
196 print "\n# Ran %d tests, %d failed." % (tests, failed)
197 finally:
198 cleanup_exit()
190 199
191 200 if failed:
192 201 sys.exit(1)
General Comments 0
You need to be logged in to leave comments. Login now