diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2013-11-24 11:36:31 +1000 |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2013-11-24 11:36:31 +1000 |
commit | 073f0aa87e3e119c0cb7e19c898b69fa906de510 (patch) | |
tree | e8bce3a9f910084f13ecdc9ef4fadb861394967c /Lib/test/test_venv.py | |
parent | 88344e470668088ec85f1170b3e650d0ad613184 (diff) | |
download | cpython-073f0aa87e3e119c0cb7e19c898b69fa906de510.tar.gz |
Issue 19734: better diagnostics for test_venv failures
Diffstat (limited to 'Lib/test/test_venv.py')
-rw-r--r-- | Lib/test/test_venv.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 87d727e8cb..613d9c3a6a 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -285,15 +285,27 @@ class EnsurePipTest(BaseTest): # warnings in current versions of Python. Ensure related # environment settings don't cause venv to fail. envvars["PYTHONWARNINGS"] = "e" - self.run_with_capture(venv.create, self.env_dir, with_pip=True) + try: + self.run_with_capture(venv.create, self.env_dir, with_pip=True) + except subprocess.CalledProcessError as exc: + # The output this produces can be a little hard to read, but + # least it has all the details + details = exc.output.decode(errors="replace") + msg = "{}\n\n**Subprocess Output**\n{}".format(exc, details) + self.fail(msg) envpy = os.path.join(os.path.realpath(self.env_dir), self.bindir, self.exe) cmd = [envpy, '-m', 'pip', '--version'] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() - self.assertEqual(err, b"") - self.assertTrue(out.startswith(b"pip")) - self.assertIn(self.env_dir.encode(), out) + # We force everything to text, so unittest gives the detailed diff + # if we get unexpected results + err = err.decode("latin-1") # Force to text, prevent decoding errors + self.assertEqual(err, "") + out = out.decode("latin-1") # Force to text, prevent decoding errors + env_dir = os.fsencode(self.env_dir).decode("latin-1") + self.assertTrue(out.startswith("pip")) + self.assertIn(env_dir, out) def test_main(): |