Skip to content
Snippets Groups Projects

Manager.imports(): Restore Python import behavior even if an exception is raised

Merged Penny Madysa requested to merge (removed):master into master
All threads resolved!
Files
2
@@ -184,3 +184,36 @@ def test_class_path_join(mocked_mgr):
with unittest.mock.patch('os.name', 'something-else'):
assert mgr.class_path(extras) == "module1.jar:path/to/mod2.jar"
def test_imports_removed_on_success(mocked_mgr):
pytest.importorskip('jpype', minversion='1.0')
mgr = mocked_mgr[0]
with mgr.imports():
import java.util
assert java.util in sys.modules.values()
assert java.util not in sys.modules.values()
def test_imports_removed_on_failure(mocked_mgr):
pytest.importorskip('jpype', minversion='1.0')
mgr = mocked_mgr[0]
with pytest.raises(ValueError):
with mgr.imports():
import java.util
assert java.util in sys.modules.values()
raise ValueError()
assert java.util not in sys.modules.values()
def test_imports_are_reentrant(mocked_mgr):
pytest.importorskip('jpype', minversion='1.0')
mgr = mocked_mgr[0]
with mgr.imports():
import java.util
with mgr.imports():
import java.lang
assert java.util in sys.modules.values()
assert java.lang in sys.modules.values()
assert java.util in sys.modules.values()
assert java.lang not in sys.modules.values()
assert java.util not in sys.modules.values()
assert java.lang not in sys.modules.values()
Loading