Skip to content

Commit 4f15612

Browse files
committed
map module fullname to origin
1 parent 8cc7612 commit 4f15612

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/_pytest/assertion/rewrite.py

+11-7
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def __init__(self, config: Config) -> None:
8080
self._basenames_to_check_rewrite = {"conftest"}
8181
self._marked_for_rewrite_cache: dict[str, bool] = {}
8282
self._session_paths_checked = False
83-
self.fn: str | None = None
83+
self._fns: dict[str, str] = {}
8484

8585
def set_session(self, session: Session | None) -> None:
8686
self.session = session
@@ -127,7 +127,7 @@ def find_spec(
127127
):
128128
return None
129129
else:
130-
self.fn = fn = spec.origin
130+
self._fns[name] = fn = spec.origin
131131

132132
if not self._should_rewrite(name, fn, state):
133133
return None
@@ -145,8 +145,8 @@ def create_module(
145145
return None # default behaviour is fine
146146

147147
def get_code(self, fullname: str) -> types.CodeType:
148-
assert self.fn is not None
149-
fn = Path(self.fn)
148+
assert fullname in self._fns
149+
fn = Path(self._fns[fullname])
150150
state = self.config.stash[assertstate_key]
151151

152152
# The requested module looks like a test file, so rewrite it. This is
@@ -185,11 +185,15 @@ def get_code(self, fullname: str) -> types.CodeType:
185185
return co
186186

187187
def exec_module(self, module: types.ModuleType) -> None:
188-
assert self.fn is not None
189-
190188
module_name = module.__name__
191189

192-
self._rewritten_names[module_name] = Path(self.fn)
190+
assert (
191+
module_name in self._fns
192+
and module.__spec__ is not None
193+
and module.__spec__.origin == self._fns[module_name]
194+
)
195+
196+
self._rewritten_names[module_name] = Path(self._fns[module_name])
193197

194198
exec(self.get_code(module_name), module.__dict__)
195199

0 commit comments

Comments
 (0)