diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2011-04-25 19:21:07 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2011-04-25 19:21:07 (GMT) |
commit | 8e6057769373a76fb8cead60f001ced38b635c5c (patch) | |
tree | aa3059350c50f093f0984daad7e9feaddbd2ad15 /Lib/test | |
parent | b32321aed94bee8ea68fad79ed710670d0c1941c (diff) | |
download | cpython-8e6057769373a76fb8cead60f001ced38b635c5c.zip cpython-8e6057769373a76fb8cead60f001ced38b635c5c.tar.gz cpython-8e6057769373a76fb8cead60f001ced38b635c5c.tar.bz2 |
Issue #10914: Add a minimal embedding test to test_capi.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_capi.py | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index f913347..327ac66 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -2,6 +2,7 @@ # these are all functions _testcapi exports whose name begins with 'test_'. from __future__ import with_statement +import os import random import subprocess import sys @@ -141,8 +142,38 @@ class Test6012(unittest.TestCase): def test(self): self.assertEqual(_testcapi.argparsing("Hello", "World"), 1) + +class EmbeddingTest(unittest.TestCase): + + def test_subinterps(self): + # XXX only tested under Unix checkouts + basepath = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + oldcwd = os.getcwd() + # This is needed otherwise we get a fatal error: + # "Py_Initialize: Unable to get the locale encoding + # LookupError: no codec search functions registered: can't find encoding" + os.chdir(basepath) + try: + exe = os.path.join(basepath, "Modules", "_testembed") + if not os.path.exists(exe): + self.skipTest("%r doesn't exist" % exe) + p = subprocess.Popen([exe], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + (out, err) = p.communicate() + self.assertEqual(p.returncode, 0, + "bad returncode %d, stderr is %r" % + (p.returncode, err)) + if support.verbose: + print() + print(out.decode('latin1')) + print(err.decode('latin1')) + finally: + os.chdir(oldcwd) + + def test_main(): - support.run_unittest(CAPITest) + support.run_unittest(CAPITest, TestPendingCalls, Test6012, EmbeddingTest) for name in dir(_testcapi): if name.startswith('test_'): @@ -177,8 +208,6 @@ def test_main(): t.start() t.join() - support.run_unittest(TestPendingCalls, Test6012) - if __name__ == "__main__": test_main() |