Skip to content

Commit 4fc2e10

Browse files
committed
Address Serhiy's review
* Add more tests * Add 'const'
1 parent 075a205 commit 4fc2e10

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

Lib/test/test_capi/test_import.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,21 @@ def check_getmoduleattr(self, getmoduleattr):
322322
self.assertIs(getmoduleattr('sys', 'argv'), sys.argv)
323323
self.assertIs(getmoduleattr('types', 'ModuleType'), types.ModuleType)
324324

325+
# module name containing a dot
326+
attr = getmoduleattr('email.message', 'Message')
327+
from email.message import Message
328+
self.assertIs(attr, Message)
329+
330+
with self.assertRaises(ImportError):
331+
# nonexistent module
332+
getmoduleattr('nonexistentmodule', 'attr')
333+
with self.assertRaises(AttributeError):
334+
# nonexistent attribute
335+
getmoduleattr('sys', 'nonexistentattr')
336+
with self.assertRaises(AttributeError):
337+
# attribute name containing a dot
338+
getmoduleattr('sys', 'implementation.name')
339+
325340
def test_getmoduleattr(self):
326341
# Test PyImport_GetModuleAttr()
327342
getmoduleattr = _testcapi.PyImport_GetModuleAttr

Modules/_testcapi/import.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pyimport_getmoduleattr(PyObject *self, PyObject *args)
2020
static PyObject *
2121
pyimport_getmoduleattrstring(PyObject *self, PyObject *args)
2222
{
23-
char *mod_name, *attr_name;
23+
const char *mod_name, *attr_name;
2424
Py_ssize_t len;
2525
if (!PyArg_ParseTuple(args, "z#z#", &mod_name, &len, &attr_name, &len)) {
2626
return NULL;

0 commit comments

Comments
 (0)