Skip to content

Commit 56402aa

Browse files
committed
Clear error if importing module with same name as built-in module.
Fixes robotframework#2541.
1 parent ce41751 commit 56402aa

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

atest/robot/test_libraries/library_import_failing.robot

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
*** Settings ***
2-
Suite Setup Run Tests ${EMPTY} test_libraries/library_import_failing.robot
2+
Suite Setup Run Tests ${EMPTY} test_libraries/library_import_failing.robot
33
Resource atest_resource.robot
44

55
*** Test Cases ***
@@ -53,3 +53,6 @@ Initializing Java Library Fails
5353
Import Should Have Failed 9 test_libraries/library_import_failing.robot
5454
... Initializing test library 'InitializationFailJavaLibrary' with no arguments failed: Initialization failed!
5555
... stacktrace=at InitializationFailJavaLibrary.<init>(InitializationFailJavaLibrary.java:4)
56+
57+
Importing library with same name as Python built-in module
58+
Check Test Case Name clash with Python builtin-module

atest/testdata/test_libraries/library_import_failing.robot

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,16 @@ Library ${non existing nön äscii}
99
Library InitializationFailLibrary.py ${nön existing} ${vars here}
1010
Library # Missing name causes error
1111
Library InitializationFailJavaLibrary.java
12+
Library OperatingSystem # This succeeds after all failed imports
13+
14+
*** Variables ***
15+
${CLASH WITH BUILTIN} %{TEMPDIR}${/}sys.py
1216

1317
*** Test Cases ***
14-
Dummy test
15-
Comment Only testing imports here
18+
Name clash with Python builtin-module
19+
[Documentation] FAIL
20+
... Importing test library '${CLASH WITH BUILTIN}' failed:\
21+
... Cannot import custom module with same name as Python built-in module.
22+
Create File ${CLASH WITH BUILTIN} def kw(): pass
23+
Import library ${CLASH WITH BUILTIN}
24+
[Teardown] Remove File ${CLASH WITH BUILTIN}

src/robot/utils/importer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ def __init__(self, logger):
144144
self._logger = logger
145145

146146
def _import(self, name, fromlist=None, retry=True):
147+
if name in sys.builtin_module_names:
148+
raise DataError('Cannot import custom module with same name as '
149+
'Python built-in module.')
147150
invalidate_import_caches()
148151
try:
149152
try:

0 commit comments

Comments
 (0)