mirror of
https://github.com/python/cpython.git
synced 2025-07-16 07:45:20 +00:00
Issue #10914: Add a minimal embedding test to test_capi.
This commit is contained in:
parent
b32321aed9
commit
8e60577693
4 changed files with 89 additions and 4 deletions
|
@ -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()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue