1111from astropy .io .fits .convenience import writeto
1212from astropy .io .fits .hdu import PrimaryHDU , hdulist
1313from astropy .io .fits .scripts import fitsdiff
14+ from astropy .utils .compat .optional_deps import HAS_UNCOMPRESSPY
1415from astropy .utils .misc import _NOT_OVERWRITING_MSG_MATCH
1516
1617from .conftest import FitsTestCase
@@ -236,7 +237,6 @@ def test_quiet(self, capsys):
236237 assert out == ""
237238 assert err == ""
238239
239- @pytest .mark .slow
240240 def test_path (self , capsys ):
241241 os .mkdir (self .temp ("sub/" ))
242242 tmp_b = self .temp ("sub/ascii.fits" )
@@ -256,7 +256,9 @@ def test_path(self, capsys):
256256 tmp_d = self .temp ("sub/" )
257257 assert fitsdiff .main (["-q" , self .data_dir , tmp_d ]) == 1
258258 assert fitsdiff .main (["-q" , tmp_d , self .data_dir ]) == 1
259- assert fitsdiff .main (["-q" , self .data_dir , self .data_dir ]) == 0
259+
260+ expected_retv = int (not HAS_UNCOMPRESSPY )
261+ assert fitsdiff .main (["-q" , self .data_dir , self .data_dir ]) == expected_retv
260262
261263 # no match
262264 tmp_c = self .data ("arange.fits" )
@@ -273,6 +275,43 @@ def test_path(self, capsys):
273275 assert fitsdiff .main (["-q" , tmp_f , self .data_dir ]) == 0
274276 assert fitsdiff .main (["-q" , self .data_dir , tmp_f ]) == 0
275277
278+ @pytest .mark .filterwarnings ("ignore:unclosed file:ResourceWarning" )
279+ def test_warning_unreadable_file (self , capsys , monkeypatch ):
280+ # simulate not having uncompresspy installed regardless of the actual state
281+ monkeypatch .setattr (fits .file , "HAS_UNCOMPRESSPY" , False )
282+
283+ Zfile = self .data ("lzw.fits.Z" )
284+ assert fitsdiff .main ([Zfile , Zfile ]) != 0
285+ out , err = capsys .readouterr ()
286+ assert out == ""
287+ assert err == f"Warning: failed to open { Zfile } . Skipping.\n "
288+
289+ os .mkdir (self .temp ("sub/" ))
290+ tmp = self .temp ("sub/ascii.fits" )
291+ tmp_h = self .data ("group.fits" )
292+ with hdulist .fitsopen (tmp_h ) as hdu :
293+ hdu .writeto (tmp )
294+
295+ assert fitsdiff .main ([Zfile , tmp ]) != 0
296+ out , err = capsys .readouterr ()
297+ assert out == ""
298+ assert err == f"Warning: failed to open { Zfile } (or { tmp } ). Skipping.\n "
299+
300+ assert fitsdiff .main (["-q" , Zfile , tmp ]) != 0
301+ out , err = capsys .readouterr ()
302+ assert out == ""
303+ assert err == ""
304+
305+ assert fitsdiff .main ([tmp , Zfile ]) != 0
306+ out , err = capsys .readouterr ()
307+ assert out == ""
308+ assert err == f"Warning: failed to open { tmp } (or { Zfile } ). Skipping.\n "
309+
310+ assert fitsdiff .main (["-q" , tmp , Zfile ]) != 0
311+ out , err = capsys .readouterr ()
312+ assert out == ""
313+ assert err == ""
314+
276315 def test_ignore_hdus (self ):
277316 a = np .arange (100 ).reshape (10 , 10 )
278317 b = a .copy () + 1
0 commit comments