@@ -93,49 +93,46 @@ def test_non_ascii_module_name(self):
9393 self .check_import (f'{ name } .capsule' )
9494
9595 def test_submodule (self ):
96- # Only the first component is imported; a submodule not imported
97- # by its package is not found.
98- self .assertRaises (AttributeError ,
99- _testlimitedcapi .PyCapsule_Import , 'capsule_pkg.sub.capsule' )
100- # It is found after explicit import.
101- importlib .import_module ('capsule_pkg.sub' )
96+ # A submodule not imported by its package is imported if needed.
97+ self .assertNotIn ('capsule_pkg.sub' , sys .modules )
98+ self .check_import ('capsule_pkg.sub.capsule' )
99+ self .assertIn ('capsule_pkg.sub' , sys .modules )
100+ # It is also found if already imported.
102101 self .check_import ('capsule_pkg.sub.capsule' )
103102 # A submodule imported by its package is found.
104103 self .check_import ('capsule_autopkg.sub.capsule' )
105104
106105 def test_invalid_name (self ):
107106 pycapsule_import = _testlimitedcapi .PyCapsule_Import
108107 # Non-existing module.
109- self .assertRaisesRegex (ImportError ,
110- 'PyCapsule_Import could not import module " capsule_nonexistent"' ,
108+ self .assertRaisesRegex (ModuleNotFoundError ,
109+ "No module named ' capsule_nonexistent'" ,
111110 pycapsule_import , 'capsule_nonexistent.capsule' )
112111 # Non-UTF-8 module name.
113- self .assertRaisesRegex (ImportError ,
114- 'PyCapsule_Import could not import module' ,
115- pycapsule_import , b'\xff \xfe .capsule' )
112+ self .assertRaises (UnicodeDecodeError ,
113+ pycapsule_import , b'\xff \xfe .capsule' )
116114 # Empty module name.
117- self .assertRaisesRegex (ImportError ,
118- 'PyCapsule_Import could not import module ""' ,
119- pycapsule_import , '.capsule_mod.capsule' )
115+ self .assertRaisesRegex (ValueError , 'Empty module name' ,
116+ pycapsule_import , '.capsule_mod.capsule' )
120117 # Empty name.
121- self .assertRaisesRegex (ImportError ,
122- 'PyCapsule_Import could not import module ""' ,
123- pycapsule_import , '' )
118+ self .assertRaisesRegex (AttributeError , 'is not valid' ,
119+ pycapsule_import , '' )
124120 # Only a dot.
125- self .assertRaisesRegex (ImportError ,
126- 'PyCapsule_Import could not import module ""' ,
127- pycapsule_import , '.' )
121+ self .assertRaisesRegex (ValueError , 'Empty module name' ,
122+ pycapsule_import , '.' )
128123 # Non-existing attribute.
129- self .assertRaises (AttributeError ,
130- pycapsule_import , 'capsule_mod.nonexistent' )
124+ self .assertRaisesRegex (AttributeError , 'is not valid' ,
125+ pycapsule_import , 'capsule_mod.nonexistent' )
131126 # Empty attribute name.
132- self .assertRaises (AttributeError , pycapsule_import , 'capsule_mod.' )
127+ self .assertRaisesRegex (AttributeError , 'is not valid' ,
128+ pycapsule_import , 'capsule_mod.' )
133129 # Consecutive dots.
134- self .assertRaises (AttributeError ,
135- pycapsule_import , 'capsule_mod..capsule' )
130+ self .assertRaisesRegex (ModuleNotFoundError ,
131+ "No module named 'capsule_mod.'" ,
132+ pycapsule_import , 'capsule_mod..capsule' )
136133 # Attribute of an object which is not a module.
137- self .assertRaises (AttributeError ,
138- pycapsule_import , 'capsule_mod.not_capsule.capsule' )
134+ self .assertRaisesRegex (AttributeError , 'is not valid' ,
135+ pycapsule_import , 'capsule_mod.not_capsule.capsule' )
139136 # No attribute name.
140137 self .assertRaisesRegex (AttributeError , 'is not valid' ,
141138 pycapsule_import , 'capsule_mod' )
@@ -162,13 +159,9 @@ def test_invalid_capsule(self):
162159 pycapsule_import , 'capsule_mod.nullname' )
163160
164161 def test_error_from_import (self ):
165- # The exception raised during importing the module is replaced
166- # with generic ImportError.
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"' )
162+ # The exception raised during importing the module is propagated.
163+ self .assertRaises (ZeroDivisionError ,
164+ _testlimitedcapi .PyCapsule_Import , 'capsule_broken.capsule' )
172165
173166 def test_error_from_attribute_lookup (self ):
174167 self .assertRaises (FloatingPointError ,
0 commit comments