@@ -80,6 +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
84
84
85
def set_session (self , session : Session | None ) -> None :
85
86
self .session = session
@@ -126,7 +127,7 @@ def find_spec(
126
127
):
127
128
return None
128
129
else :
129
- fn = spec .origin
130
+ self . fn = fn = spec .origin
130
131
131
132
if not self ._should_rewrite (name , fn , state ):
132
133
return None
@@ -143,14 +144,11 @@ def create_module(
143
144
) -> types .ModuleType | None :
144
145
return None # default behaviour is fine
145
146
146
- def exec_module (self , module : types .ModuleType ) -> None :
147
- assert module .__spec__ is not None
148
- assert module .__spec__ .origin is not None
149
- fn = Path (module .__spec__ .origin )
147
+ def get_code (self , fullname : str ) -> types .CodeType
148
+ assert self .fn is not None
149
+ fn = Path (self .fn )
150
150
state = self .config .stash [assertstate_key ]
151
151
152
- self ._rewritten_names [module .__name__ ] = fn
153
-
154
152
# The requested module looks like a test file, so rewrite it. This is
155
153
# the most magical part of the process: load the source, rewrite the
156
154
# asserts, and load the rewritten source. We also cache the rewritten
@@ -183,7 +181,15 @@ def exec_module(self, module: types.ModuleType) -> None:
183
181
self ._writing_pyc = False
184
182
else :
185
183
state .trace (f"found cached rewritten pyc for { fn } " )
186
- exec (co , module .__dict__ )
184
+
185
+ return co
186
+
187
+ def exec_module (self , module : types .ModuleType ) -> None :
188
+ module_name = module .__name__
189
+
190
+ self ._rewritten_names [module_name ] = fn
191
+
192
+ exec (self .get_code (module_name ), module .__dict__ )
187
193
188
194
def _early_rewrite_bailout (self , name : str , state : AssertionState ) -> bool :
189
195
"""A fast way to get out of rewriting modules.
0 commit comments