55import unittest
66from test .support import import_helper , os_helper
77
8- _testcapi = import_helper .import_module ('_testcapi ' )
8+ _testlimitedcapi = import_helper .import_module ('_testlimitedcapi ' )
99
1010
1111class CapsuleImportTests (unittest .TestCase ):
@@ -16,17 +16,17 @@ def setUpClass(cls):
1616 tmp = cls .tmp = cls .enterClassContext (os_helper .temp_dir ())
1717 cls .enterClassContext (import_helper .DirsOnSysPath (tmp ))
1818 cls .write_file (os .path .join (tmp , 'capsule_mod.py' ), '''
19- import _testcapi
19+ import _testlimitedcapi
2020
21- capsule = _testcapi .capsule_new('capsule_mod.capsule')
22- капсула = _testcapi .capsule_new('capsule_mod.капсула')
23- mismatched = _testcapi .capsule_new('other.name')
24- nonutf8 = _testcapi .capsule_new(b'capsule_mod.nonutf8\\ xff')
25- nullname = _testcapi .capsule_new(None)
21+ capsule = _testlimitedcapi .capsule_new('capsule_mod.capsule')
22+ капсула = _testlimitedcapi .capsule_new('capsule_mod.капсула')
23+ mismatched = _testlimitedcapi .capsule_new('other.name')
24+ nonutf8 = _testlimitedcapi .capsule_new(b'capsule_mod.nonutf8\\ xff')
25+ nullname = _testlimitedcapi .capsule_new(None)
2626 not_capsule = 42
2727
2828 class ns:
29- nested = _testcapi .capsule_new('capsule_mod.ns.nested')
29+ nested = _testlimitedcapi .capsule_new('capsule_mod.ns.nested')
3030
3131 def __getattr__(name):
3232 if name == 'bad_attr':
@@ -37,17 +37,17 @@ def __getattr__(name):
3737 os .mkdir (pkg )
3838 cls .write_file (os .path .join (pkg , '__init__.py' ), '' )
3939 cls .write_file (os .path .join (pkg , 'sub.py' ), '''
40- import _testcapi
40+ import _testlimitedcapi
4141
42- capsule = _testcapi .capsule_new('capsule_pkg.sub.capsule')
42+ capsule = _testlimitedcapi .capsule_new('capsule_pkg.sub.capsule')
4343 ''' )
4444 autopkg = os .path .join (tmp , 'capsule_autopkg' )
4545 os .mkdir (autopkg )
4646 cls .write_file (os .path .join (autopkg , '__init__.py' ), 'from . import sub\n ' )
4747 cls .write_file (os .path .join (autopkg , 'sub.py' ), '''
48- import _testcapi
48+ import _testlimitedcapi
4949
50- capsule = _testcapi .capsule_new('capsule_autopkg.sub.capsule')
50+ capsule = _testlimitedcapi .capsule_new('capsule_autopkg.sub.capsule')
5151 ''' )
5252 cls .write_file (os .path .join (tmp , 'capsule_broken.py' ), '1/0\n ' )
5353 importlib .invalidate_caches ()
@@ -64,9 +64,9 @@ def write_file(path, source):
6464 f .write (textwrap .dedent (source ))
6565
6666 def check_import (self , name , no_block = 0 ):
67- # _testcapi .PyCapsule_Import() returns the name stored as the
68- # pointer by _testcapi .capsule_new().
69- self .assertEqual (_testcapi .PyCapsule_Import (name , * args ), name )
67+ # _testlimitedcapi .PyCapsule_Import() returns the name stored as the
68+ # pointer by _testlimitedcapi .capsule_new().
69+ self .assertEqual (_testlimitedcapi .PyCapsule_Import (name , no_block ), name )
7070
7171 def test_import (self ):
7272 # The module is imported if not already imported.
@@ -84,9 +84,9 @@ def test_import(self):
8484 def test_non_ascii_module_name (self ):
8585 name = os_helper .TESTFN_NONASCII
8686 self .write_file (os .path .join (self .tmp , name + '.py' ), f'''
87- import _testcapi
87+ import _testlimitedcapi
8888
89- capsule = _testcapi .capsule_new('{ name } .capsule')
89+ capsule = _testlimitedcapi .capsule_new('{ name } .capsule')
9090 ''' )
9191 importlib .invalidate_caches ()
9292 self .addCleanup (import_helper .unload , name )
@@ -96,26 +96,35 @@ def test_submodule(self):
9696 # Only the first component is imported; a submodule not imported
9797 # by its package is not found.
9898 self .assertRaises (AttributeError ,
99- _testcapi .PyCapsule_Import , 'capsule_pkg.sub.capsule' )
99+ _testlimitedcapi .PyCapsule_Import , 'capsule_pkg.sub.capsule' )
100100 # It is found after explicit import.
101101 importlib .import_module ('capsule_pkg.sub' )
102102 self .check_import ('capsule_pkg.sub.capsule' )
103103 # A submodule imported by its package is found.
104104 self .check_import ('capsule_autopkg.sub.capsule' )
105105
106106 def test_invalid_name (self ):
107- pycapsule_import = _testcapi .PyCapsule_Import
107+ pycapsule_import = _testlimitedcapi .PyCapsule_Import
108108 # Non-existing module.
109- self .assertRaises (ImportError ,
110- pycapsule_import , 'capsule_nonexistent.capsule' )
109+ self .assertRaisesRegex (ImportError ,
110+ 'PyCapsule_Import could not import module "capsule_nonexistent"' ,
111+ pycapsule_import , 'capsule_nonexistent.capsule' )
111112 # Non-UTF-8 module name.
112- self .assertRaises (ImportError , pycapsule_import , b'\xff \xfe .capsule' )
113+ self .assertRaisesRegex (ImportError ,
114+ 'PyCapsule_Import could not import module' ,
115+ pycapsule_import , b'\xff \xfe .capsule' )
113116 # Empty module name.
114- self .assertRaises (ImportError , pycapsule_import , '.capsule_mod.capsule' )
117+ self .assertRaisesRegex (ImportError ,
118+ 'PyCapsule_Import could not import module ""' ,
119+ pycapsule_import , '.capsule_mod.capsule' )
115120 # Empty name.
116- self .assertRaises (ImportError , pycapsule_import , '' )
121+ self .assertRaisesRegex (ImportError ,
122+ 'PyCapsule_Import could not import module ""' ,
123+ pycapsule_import , '' )
117124 # Only a dot.
118- self .assertRaises (ImportError , pycapsule_import , '.' )
125+ self .assertRaisesRegex (ImportError ,
126+ 'PyCapsule_Import could not import module ""' ,
127+ pycapsule_import , '.' )
119128 # Non-existing attribute.
120129 self .assertRaises (AttributeError ,
121130 pycapsule_import , 'capsule_mod.nonexistent' )
@@ -134,7 +143,7 @@ def test_invalid_name(self):
134143 # CRASHES pycapsule_import(NULL)
135144
136145 def test_invalid_capsule (self ):
137- pycapsule_import = _testcapi .PyCapsule_Import
146+ pycapsule_import = _testlimitedcapi .PyCapsule_Import
138147 # The attribute is not a capsule.
139148 self .assertRaisesRegex (AttributeError , 'is not valid' ,
140149 pycapsule_import , 'capsule_mod.not_capsule' )
@@ -155,14 +164,17 @@ def test_invalid_capsule(self):
155164 def test_error_from_import (self ):
156165 # The exception raised during importing the module is replaced
157166 # with generic ImportError.
158- self .assertRaises (ImportError ,
159- _testcapi .PyCapsule_Import , 'capsule_broken.capsule' )
167+ with self .assertRaises (ImportError ) as cm :
168+ _testlimitedcapi .PyCapsule_Import ('capsule_broken.capsule' )
169+ self .assertEqual (str (cm .exception ),
170+ 'PyCapsule_Import could not import '
171+ 'module "capsule_broken"' )
160172
161173 def test_error_from_attribute_lookup (self ):
162174 self .assertRaises (FloatingPointError ,
163- _testcapi .PyCapsule_Import , 'capsule_mod.bad_attr' )
175+ _testlimitedcapi .PyCapsule_Import , 'capsule_mod.bad_attr' )
164176 self .assertRaises (FloatingPointError ,
165- _testcapi .PyCapsule_Import , 'capsule_mod.bad_attr.capsule' )
177+ _testlimitedcapi .PyCapsule_Import , 'capsule_mod.bad_attr.capsule' )
166178
167179
168180if __name__ == "__main__" :
0 commit comments