@@ -153,5 +153,73 @@ def test_find(self):
153153                self .assertIsNone (find_library (name ))
154154
155155
156+ @unittest .skipUnless (test .support .is_emscripten , 
157+                      'Test only valid for Emscripten' ) 
158+ class  FindLibraryEmscripten (unittest .TestCase ):
159+     @classmethod  
160+     def  setUpClass (cls ):
161+         import  tempfile 
162+ 
163+         # A very simple wasm module 
164+         # In WAT format: (module) 
165+         cls .wasm_module  =  b'\x00 asm\x01 \x00 \x00 \x00 \x00 \x08 \x04 name\x02 \x01 \x00 ' 
166+ 
167+         cls .non_wasm_content  =  b'This is not a WASM file' 
168+ 
169+         cls .temp_dir  =  tempfile .mkdtemp ()
170+         cls .libdummy_so_path  =  os .path .join (cls .temp_dir , 'libdummy.so' )
171+         with  open (cls .libdummy_so_path , 'wb' ) as  f :
172+             f .write (cls .wasm_module )
173+ 
174+         cls .libother_wasm_path  =  os .path .join (cls .temp_dir , 'libother.wasm' )
175+         with  open (cls .libother_wasm_path , 'wb' ) as  f :
176+             f .write (cls .wasm_module )
177+ 
178+         cls .libnowasm_so_path  =  os .path .join (cls .temp_dir , 'libnowasm.so' )
179+         with  open (cls .libnowasm_so_path , 'wb' ) as  f :
180+             f .write (cls .non_wasm_content )
181+ 
182+     @classmethod  
183+     def  tearDownClass (cls ):
184+         import  shutil 
185+         shutil .rmtree (cls .temp_dir )
186+ 
187+     def  test_find_wasm_file_with_so_extension (self ):
188+         with  os_helper .EnvironmentVarGuard () as  env :
189+             env .set ('LD_LIBRARY_PATH' , self .temp_dir )
190+             result  =  find_library ('dummy' )
191+             self .assertEqual (result , self .libdummy_so_path )
192+     def  test_find_wasm_file_with_wasm_extension (self ):
193+         with  os_helper .EnvironmentVarGuard () as  env :
194+             env .set ('LD_LIBRARY_PATH' , self .temp_dir )
195+             result  =  find_library ('other' )
196+             self .assertEqual (result , self .libother_wasm_path )
197+ 
198+     def  test_ignore_non_wasm_file (self ):
199+         with  os_helper .EnvironmentVarGuard () as  env :
200+             env .set ('LD_LIBRARY_PATH' , self .temp_dir )
201+             result  =  find_library ('nowasm' )
202+             self .assertIsNone (result )
203+ 
204+     def  test_find_nothing_without_ld_library_path (self ):
205+         with  os_helper .EnvironmentVarGuard () as  env :
206+             if  'LD_LIBRARY_PATH'  in  env :
207+                 del  env ['LD_LIBRARY_PATH' ]
208+             result  =  find_library ('dummy' )
209+             self .assertIsNone (result )
210+             result  =  find_library ('other' )
211+             self .assertIsNone (result )
212+ 
213+     def  test_find_nothing_with_wrong_ld_library_path (self ):
214+         import  tempfile 
215+         with  tempfile .TemporaryDirectory () as  empty_dir :
216+             with  os_helper .EnvironmentVarGuard () as  env :
217+                 env .set ('LD_LIBRARY_PATH' , empty_dir )
218+                 result  =  find_library ('dummy' )
219+                 self .assertIsNone (result )
220+                 result  =  find_library ('other' )
221+                 self .assertIsNone (result )
222+ 
223+ 
156224if  __name__  ==  "__main__" :
157225    unittest .main ()
0 commit comments