From e9997f7d54b6c762a8afa66a97bb6c3583e63287 Mon Sep 17 00:00:00 2001 From: Stephan Finkensieper Date: Thu, 9 Jul 2020 15:50:13 +0200 Subject: [PATCH] Improve test coverage --- satpy/readers/avhrr_l1b_gaclac.py | 11 +++++--- .../reader_tests/test_avhrr_l1b_gaclac.py | 27 +++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/satpy/readers/avhrr_l1b_gaclac.py b/satpy/readers/avhrr_l1b_gaclac.py index 5af2062bc2..46db6331ce 100644 --- a/satpy/readers/avhrr_l1b_gaclac.py +++ b/satpy/readers/avhrr_l1b_gaclac.py @@ -116,17 +116,20 @@ def __init__(self, filename, filename_info, filetype_info, self.sensor = 'avhrr' self.filename_info = filename_info - def get_dataset(self, key, info): - """Get the dataset.""" + def read_raw_data(self): + """Create a pygac reader and read raw data from the file.""" if self.reader is None: self.reader = self.reader_class( interpolate_coords=self.interpolate_coords, creation_site=self.creation_site, **self.reader_kwargs) self.reader.read(self.filename) - if np.all(self.reader.mask): - raise ValueError('All data is masked out') + if np.all(self.reader.mask): + raise ValueError('All data is masked out') + def get_dataset(self, key, info): + """Get the dataset.""" + self.read_raw_data() if key.name in ['latitude', 'longitude']: # Lats/lons are buffered by the reader if key.name == 'latitude': diff --git a/satpy/tests/reader_tests/test_avhrr_l1b_gaclac.py b/satpy/tests/reader_tests/test_avhrr_l1b_gaclac.py index 45e6342206..ecbe2f46ff 100644 --- a/satpy/tests/reader_tests/test_avhrr_l1b_gaclac.py +++ b/satpy/tests/reader_tests/test_avhrr_l1b_gaclac.py @@ -149,6 +149,7 @@ def test_init(self): 'Wrong reader class assigned to {}'.format(filename)) @mock.patch('satpy.readers.avhrr_l1b_gaclac.GACLACFile.__init__', return_value=None) + @mock.patch('satpy.readers.avhrr_l1b_gaclac.GACLACFile.read_raw_data') @mock.patch('satpy.readers.avhrr_l1b_gaclac.GACLACFile._get_channel') def test_get_dataset_channels(self, get_channel, *mocks): from satpy.dataset import DatasetID @@ -192,6 +193,27 @@ def test_get_dataset_channels(self, get_channel, *mocks): fh.get_dataset(key=key, info={'name': 1}) get_channel.assert_called_with(key) + def test_read_raw_data(self): + fh = self._get_fh_mocked(reader=None, + interpolate_coords='interpolate_coords', + creation_site='creation_site', + reader_kwargs={'foo': 'bar'}, + filename='myfile') + reader = mock.MagicMock(mask=[0]) + reader_cls = mock.MagicMock(return_value=reader) + fh.reader_class = reader_cls + fh.read_raw_data() + reader_cls.assert_called_with(interpolate_coords='interpolate_coords', + creation_site='creation_site', + foo='bar') + reader.read.assert_called_with('myfile') + + # Test exception if all data is masked + reader.mask = [1] + fh.reader = None + with self.assertRaises(ValueError): + fh.read_raw_data() + @mock.patch('satpy.readers.avhrr_l1b_gaclac.GACLACFile._update_attrs') @mock.patch('satpy.readers.avhrr_l1b_gaclac.GACLACFile.slice') @mock.patch('satpy.readers.avhrr_l1b_gaclac.GACLACFile._get_channel') @@ -472,3 +494,8 @@ def test__slice(self, strip_invalid_lat, get_qual_flags): pygac.utils.check_user_scanlines.assert_called_with( start_line=5, end_line=6, first_valid_lat=3, last_valid_lat=4, along_track=2) + + # Test slicing with older pygac versions + pygac.utils.slice_channel.return_value = ('sliced', 'foo', 'bar') + data_slc = fh._slice(data) + self.assertEqual(data_slc, 'sliced')