summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2011-04-25 19:21:07 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2011-04-25 19:21:07 (GMT)
commit8e6057769373a76fb8cead60f001ced38b635c5c (patch)
treeaa3059350c50f093f0984daad7e9feaddbd2ad15 /Lib/test
parentb32321aed94bee8ea68fad79ed710670d0c1941c (diff)
downloadcpython-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.py35
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()