@@ -80,7 +80,7 @@ def __init__(self, config: Config) -> None:
80
80
self ._basenames_to_check_rewrite = {"conftest" }
81
81
self ._marked_for_rewrite_cache : dict [str , bool ] = {}
82
82
self ._session_paths_checked = False
83
- self .fn : str | None = None
83
+ self ._fns : dict [ str , str ] = {}
84
84
85
85
def set_session (self , session : Session | None ) -> None :
86
86
self .session = session
@@ -127,7 +127,7 @@ def find_spec(
127
127
):
128
128
return None
129
129
else :
130
- self .fn = fn = spec .origin
130
+ self ._fns [ name ] = fn = spec .origin
131
131
132
132
if not self ._should_rewrite (name , fn , state ):
133
133
return None
@@ -145,8 +145,8 @@ def create_module(
145
145
return None # default behaviour is fine
146
146
147
147
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 ] )
150
150
state = self .config .stash [assertstate_key ]
151
151
152
152
# 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:
185
185
return co
186
186
187
187
def exec_module (self , module : types .ModuleType ) -> None :
188
- assert self .fn is not None
189
-
190
188
module_name = module .__name__
191
189
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 ])
193
197
194
198
exec (self .get_code (module_name ), module .__dict__ )
195
199
0 commit comments