Mercurial > hg
comparison tests/run-tests.py @ 43309:b4b1131187c4 stable
py3: decode bytes before logging in run-tests.py
Avoids messages like "Found prerequisite b'diff' at b'/usr/bin/diff'"
under Python 3.
author | Denis Laxalde <denis@laxalde.org> |
---|---|
date | Mon, 21 Oct 2019 11:26:41 +0200 |
parents | 96eb9ef777a8 |
children | 6ada8a274b9c |
comparison
equal
deleted
inserted
replaced
43308:dcf396551305 | 43309:b4b1131187c4 |
---|---|
1502 | 1502 |
1503 def _run(self, env): | 1503 def _run(self, env): |
1504 py3switch = self._py3warnings and b' -3' or b'' | 1504 py3switch = self._py3warnings and b' -3' or b'' |
1505 # Quote the python(3) executable for Windows | 1505 # Quote the python(3) executable for Windows |
1506 cmd = b'"%s"%s "%s"' % (PYTHON, py3switch, self.path) | 1506 cmd = b'"%s"%s "%s"' % (PYTHON, py3switch, self.path) |
1507 vlog("# Running", cmd) | 1507 vlog("# Running", cmd.decode("utf-8")) |
1508 normalizenewlines = os.name == 'nt' | 1508 normalizenewlines = os.name == 'nt' |
1509 result = self._runcommand(cmd, env, normalizenewlines=normalizenewlines) | 1509 result = self._runcommand(cmd, env, normalizenewlines=normalizenewlines) |
1510 if self._aborted: | 1510 if self._aborted: |
1511 raise KeyboardInterrupt() | 1511 raise KeyboardInterrupt() |
1512 | 1512 |
1587 with open(fname, 'wb') as f: | 1587 with open(fname, 'wb') as f: |
1588 for l in script: | 1588 for l in script: |
1589 f.write(l) | 1589 f.write(l) |
1590 | 1590 |
1591 cmd = b'%s "%s"' % (self._shell, fname) | 1591 cmd = b'%s "%s"' % (self._shell, fname) |
1592 vlog("# Running", cmd) | 1592 vlog("# Running", cmd.decode("utf-8")) |
1593 | 1593 |
1594 exitcode, output = self._runcommand(cmd, env) | 1594 exitcode, output = self._runcommand(cmd, env) |
1595 | 1595 |
1596 if self._aborted: | 1596 if self._aborted: |
1597 raise KeyboardInterrupt() | 1597 raise KeyboardInterrupt() |
3109 logexceptions = os.path.join(self._testdir, b'logexceptions.py') | 3109 logexceptions = os.path.join(self._testdir, b'logexceptions.py') |
3110 self.options.extra_config_opt.append( | 3110 self.options.extra_config_opt.append( |
3111 'extensions.logexceptions=%s' % logexceptions.decode('utf-8') | 3111 'extensions.logexceptions=%s' % logexceptions.decode('utf-8') |
3112 ) | 3112 ) |
3113 | 3113 |
3114 vlog("# Using TESTDIR", self._testdir) | 3114 vlog("# Using TESTDIR", _strpath(self._testdir)) |
3115 vlog("# Using RUNTESTDIR", osenvironb[b'RUNTESTDIR']) | 3115 vlog("# Using RUNTESTDIR", _strpath(osenvironb[b'RUNTESTDIR'])) |
3116 vlog("# Using HGTMP", self._hgtmp) | 3116 vlog("# Using HGTMP", _strpath(self._hgtmp)) |
3117 vlog("# Using PATH", os.environ["PATH"]) | 3117 vlog("# Using PATH", os.environ["PATH"]) |
3118 vlog("# Using", IMPL_PATH, osenvironb[IMPL_PATH]) | 3118 vlog( |
3119 vlog("# Writing to directory", self._outputdir) | 3119 "# Using", |
3120 _strpath(IMPL_PATH), | |
3121 _strpath(osenvironb[IMPL_PATH]), | |
3122 ) | |
3123 vlog("# Writing to directory", _strpath(self._outputdir)) | |
3120 | 3124 |
3121 try: | 3125 try: |
3122 return self._runtests(testdescs) or 0 | 3126 return self._runtests(testdescs) or 0 |
3123 finally: | 3127 finally: |
3124 time.sleep(0.1) | 3128 time.sleep(0.1) |
3355 def _cleanup(self): | 3359 def _cleanup(self): |
3356 """Clean up state from this test invocation.""" | 3360 """Clean up state from this test invocation.""" |
3357 if self.options.keep_tmpdir: | 3361 if self.options.keep_tmpdir: |
3358 return | 3362 return |
3359 | 3363 |
3360 vlog("# Cleaning up HGTMP", self._hgtmp) | 3364 vlog("# Cleaning up HGTMP", _strpath(self._hgtmp)) |
3361 shutil.rmtree(self._hgtmp, True) | 3365 shutil.rmtree(self._hgtmp, True) |
3362 for f in self._createdfiles: | 3366 for f in self._createdfiles: |
3363 try: | 3367 try: |
3364 os.remove(f) | 3368 os.remove(f) |
3365 except OSError: | 3369 except OSError: |
3466 raise | 3470 raise |
3467 | 3471 |
3468 makedirs(self._pythondir) | 3472 makedirs(self._pythondir) |
3469 makedirs(self._bindir) | 3473 makedirs(self._bindir) |
3470 | 3474 |
3471 vlog("# Running", cmd) | 3475 vlog("# Running", cmd.decode("utf-8")) |
3472 if subprocess.call(_strpath(cmd), shell=True) == 0: | 3476 if subprocess.call(_strpath(cmd), shell=True) == 0: |
3473 if not self.options.verbose: | 3477 if not self.options.verbose: |
3474 try: | 3478 try: |
3475 os.remove(installerrs) | 3479 os.remove(installerrs) |
3476 except OSError as e: | 3480 except OSError as e: |
3641 """Ensure tools required to run tests are present.""" | 3645 """Ensure tools required to run tests are present.""" |
3642 for p in self.REQUIREDTOOLS: | 3646 for p in self.REQUIREDTOOLS: |
3643 if os.name == 'nt' and not p.endswith(b'.exe'): | 3647 if os.name == 'nt' and not p.endswith(b'.exe'): |
3644 p += b'.exe' | 3648 p += b'.exe' |
3645 found = self._findprogram(p) | 3649 found = self._findprogram(p) |
3650 p = p.decode("utf-8") | |
3646 if found: | 3651 if found: |
3647 vlog("# Found prerequisite", p, "at", found) | 3652 vlog("# Found prerequisite", p, "at", _strpath(found)) |
3648 else: | 3653 else: |
3649 print( | 3654 print("WARNING: Did not find prerequisite tool: %s " % p) |
3650 "WARNING: Did not find prerequisite tool: %s " | |
3651 % p.decode("utf-8") | |
3652 ) | |
3653 | 3655 |
3654 | 3656 |
3655 def aggregateexceptions(path): | 3657 def aggregateexceptions(path): |
3656 exceptioncounts = collections.Counter() | 3658 exceptioncounts = collections.Counter() |
3657 testsbyfailure = collections.defaultdict(set) | 3659 testsbyfailure = collections.defaultdict(set) |