Author: Ronan Lamy <[email protected]>
Branch: multiphase
Changeset: r92113:c0c2ccfe883f
Date: 2017-08-09 03:40 +0200
http://bitbucket.org/pypy/pypy/changeset/c0c2ccfe883f/
Log: Add test
diff --git a/pypy/module/cpyext/test/multiphase2.c
b/pypy/module/cpyext/test/multiphase2.c
--- a/pypy/module/cpyext/test/multiphase2.c
+++ b/pypy/module/cpyext/test/multiphase2.c
@@ -417,7 +417,7 @@
PyDoc_STR("Not a PyModuleObject object, but requests per-module state"),
10, /* m_size */
NULL, /* m_methods */
- //slots_create_nonmodule, /* m_slots */
+ slots_create_nonmodule, /* m_slots */
NULL, /* m_traverse */
NULL, /* m_clear */
NULL, /* m_free */
@@ -436,7 +436,7 @@
PyDoc_STR("PyModuleDef with negative m_size"),
-1, /* m_size */
NULL, /* m_methods */
- NULL, //slots_create_nonmodule, /* m_slots */
+ slots_create_nonmodule, /* m_slots */
NULL, /* m_traverse */
NULL, /* m_clear */
NULL, /* m_free */
diff --git a/pypy/module/cpyext/test/test_module.py
b/pypy/module/cpyext/test/test_module.py
--- a/pypy/module/cpyext/test/test_module.py
+++ b/pypy/module/cpyext/test/test_module.py
@@ -175,3 +175,38 @@
ex_class = module.Example
importlib.reload(module)
assert ex_class is module.Example
+
+ def w_load_from_spec(self, loader, spec):
+ from importlib import util
+ module = util.module_from_spec(spec)
+ loader.exec_module(module)
+ return module
+
+ def test_bad_modules(self):
+ # XXX: not a very good test, since most internal issues in cpyext
+ # cause SystemErrors.
+ from importlib import machinery, util
+ NAME = 'multiphase2'
+ module = self.import_module(name=NAME)
+ origin = module.__loader__.path
+ for name_base in [
+ 'bad_slot_large',
+ 'bad_slot_negative',
+ 'create_int_with_state',
+ 'negative_size',
+ 'export_null',
+ 'export_uninitialized',
+ 'export_raise',
+ 'export_unreported_exception',
+ 'create_null',
+ 'create_raise',
+ 'create_unreported_exception',
+ 'nonmodule_with_exec_slots',
+ 'exec_err',
+ 'exec_raise',
+ 'exec_unreported_exception',
+ ]:
+ name = '_testmultiphase_' + name_base
+ loader = machinery.ExtensionFileLoader(name, origin)
+ spec = util.spec_from_loader(name, loader)
+ raises(SystemError, self.load_from_spec, loader, spec)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit