@@ -222,13 +222,17 @@ def _load_testfile(filename, package, module_relative, encoding):
222222 if module_relative :
223223 package = _normalize_module (package , 3 )
224224 filename = _module_relative_path (package , filename )
225- if getattr (package , '__loader__' , None ) is not None :
226- if hasattr (package .__loader__ , 'get_data' ):
227- file_contents = package .__loader__ .get_data (filename )
228- file_contents = file_contents .decode (encoding )
229- # get_data() opens files as 'rb', so one must do the equivalent
230- # conversion as universal newlines would do.
231- return _newline_convert (file_contents ), filename
225+ if (loader := getattr (package , '__loader__' , None )) is None :
226+ try :
227+ loader = package .__spec__ .loader
228+ except AttributeError :
229+ pass
230+ if hasattr (loader , 'get_data' ):
231+ file_contents = loader .get_data (filename )
232+ file_contents = file_contents .decode (encoding )
233+ # get_data() opens files as 'rb', so one must do the equivalent
234+ # conversion as universal newlines would do.
235+ return _newline_convert (file_contents ), filename
232236 with open (filename , encoding = encoding ) as f :
233237 return f .read (), filename
234238
0 commit comments