@@ -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