Skip to content

Commit 8f93800

Browse files
author
Philippe Theroux
committed
Added checks for loggers and repr + updated setup.py test commands
1 parent 946b324 commit 8f93800

21 files changed

+423
-98
lines changed

setup.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import io
2121
import os
2222
import re
23-
from setuptools import Command, find_packages, setup
2423
import shutil
24+
import sys
25+
26+
from setuptools import Command, find_packages, setup
2527

2628

2729
class PyCleanBuild(Command):
@@ -63,7 +65,7 @@ def run(self):
6365
os.remove('../{}'.format(file_))
6466

6567

66-
class PyTest(Command):
68+
class Unittest(Command):
6769
user_options = []
6870

6971
def initialize_options(self):
@@ -74,7 +76,8 @@ def finalize_options(self):
7476

7577
def run(self):
7678
import subprocess
77-
errno = subprocess.call(['pytest'])
79+
errno = subprocess.call([sys.executable,
80+
'-m', 'unittest', 'discover'])
7881
raise SystemExit(errno)
7982

8083

@@ -91,10 +94,9 @@ def run(self):
9194
import subprocess
9295

9396
errno = subprocess.call(['coverage', 'run',
94-
'--source=geomet_data_registry',
95-
'-m', 'unittest',
96-
'geomet_data_registry.tests.run_tests'])
97-
errno = subprocess.call(['coverage', 'report', '-m'])
97+
'-m', 'unittest', 'discover'])
98+
errno = subprocess.call(['coverage', 'report', '-m',
99+
'--include=geomet_data_registry/layer/*.py'])
98100
raise SystemExit(errno)
99101

100102

@@ -156,7 +158,7 @@ def get_package_version():
156158
'Programming Language :: Python'
157159
],
158160
cmdclass={
159-
'test': PyTest,
161+
'test': Unittest,
160162
'coverage': PyCoverage,
161163
'cleanbuild': PyCleanBuild
162164
}

tests/test_base.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,12 @@ def test_is_valid_interval(self):
175175

176176
self.assertListEqual(return_list, [True, True, False])
177177

178+
def test_repr(self):
179+
self.assertEqual(
180+
repr(self.base_layer),
181+
'<BaseLayer> model_gem_global'
182+
)
183+
178184

179185
class TestRegister(unittest.TestCase, Setup):
180186
def setUp(self):
@@ -191,10 +197,15 @@ def tearDown(self):
191197
def test_register_no_items(self):
192198
"""
193199
Test that when no items are identified
194-
geomet_data_registry.layer.base.register() returns False.
200+
geomet_data_registry.layer.base.register()
201+
returns False and an error is logged.
195202
"""
196-
197-
self.assertFalse(self.base_layer.register())
203+
with self.assertLogs(
204+
'geomet_data_registry.layer.base', level='ERROR'
205+
) as err:
206+
self.assertFalse(self.base_layer.register())
207+
# assert a single LOGGER.error was called
208+
self.assertEqual(len(err.records), 1)
198209

199210
def test_register_one_item(self):
200211
"""
@@ -354,7 +365,7 @@ def test_update_count_expected_81(self):
354365
def test_update_count_incomplete_mr(self):
355366
"""
356367
Test that the appropriate model run count is reset when an imcomplete
357-
model run is identified.
368+
model run is identified and an error is logged.
358369
"""
359370

360371
# store.get_key() will return these values in sequence like a generator
@@ -372,7 +383,12 @@ def test_update_count_incomplete_mr(self):
372383
call('model_gem_global_TMP_TGL_2_12Z_count', 0),
373384
]
374385

375-
self.base_layer.update_count(self.item, 201)
386+
with self.assertLogs(
387+
'geomet_data_registry.layer.base', level='ERROR'
388+
) as err:
389+
self.base_layer.update_count(self.item, 201)
390+
# assert a single LOGGER.error was called
391+
self.assertEqual(len(err.records), 1)
376392

377393
self.mocked_load_plugin.return_value.set_key.assert_has_calls(calls)
378394

tests/test_cansips.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ def test_super_init(self):
7373
# assert super().__init__() was called with the correct provider def
7474
self.mocked_base_init.assert_called_with({'name': 'cansips'})
7575

76+
def test_repr(self):
77+
self.assertEqual(
78+
repr(self.layer_handler['cansips']),
79+
'<ModelCanSIPSLayer> cansips'
80+
)
81+
7682

7783
class TestIdentify(unittest.TestCase, Setup):
7884
def setUp(self):
@@ -161,9 +167,17 @@ def test_items_identify(self):
161167
)
162168

163169
def test_unsuccessful_identify(self):
164-
# assert identify returns False when the wx_variable isn't correct
170+
# assert identify returns False when the wx_variable
171+
# isn't correct and a warning is logged.
165172
self.filepath = self.filepath.replace('PRATE_SFC_0', 'Not_wx_variable')
166-
self.assertFalse(self.layer_handler['cansips'].identify(self.filepath))
173+
with self.assertLogs(
174+
'geomet_data_registry.layer.cansips', level='WARNING'
175+
) as warn:
176+
self.assertFalse(
177+
self.layer_handler['cansips'].identify(self.filepath)
178+
)
179+
# assert a single LOGGER.warning was called
180+
self.assertEqual(len(warn.records), 1)
167181

168182

169183
class TestAddTimeKey(unittest.TestCase, Setup):

tests/test_cgsl.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ def test_super_init(self):
6969
# assert super().__init__() was called with the correct provider def
7070
self.mocked_base_init.assert_called_with({'name': 'cgsl'})
7171

72+
def test_repr(self):
73+
self.assertEqual(
74+
repr(self.layer_handler['cgsl']),
75+
'<ModelCgslGlobalLayer> cgsl'
76+
)
77+
7278

7379
class TestIdentify(unittest.TestCase, Setup):
7480
def setUp(self):
@@ -174,9 +180,17 @@ def test_invalid_interval_identify(self):
174180
)
175181

176182
def test_unsuccessful_identify(self):
177-
# assert identify returns False when the wx_variable isn't correct
183+
# assert identify returns False when the wx_variable
184+
# isn't correct and a warning is logged.
178185
self.filepath = self.filepath.replace('ocean', 'Not_wx_variable')
179-
self.assertFalse(self.layer_handler['cgsl'].identify(self.filepath))
186+
with self.assertLogs(
187+
'geomet_data_registry.layer.cgsl', level='WARNING'
188+
) as warn:
189+
self.assertFalse(
190+
self.layer_handler['cgsl'].identify(self.filepath)
191+
)
192+
# assert a single LOGGER.warning was called
193+
self.assertEqual(len(warn.records), 1)
180194

181195

182196
if __name__ == '__main__':

tests/test_gdwps.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ def test_super_init(self):
6969
# assert super().__init__() was called with the correct provider def
7070
self.mocked_base_init.assert_called_with({'name': 'gdwps'})
7171

72+
def test_repr(self):
73+
self.assertEqual(
74+
repr(self.layer_handler['gdwps']),
75+
'<ModelGdwpsLayer> gdwps'
76+
)
77+
7278

7379
class TestIdentify(unittest.TestCase, Setup):
7480
def setUp(self):
@@ -258,9 +264,17 @@ def test_invalid_interval_identify(self):
258264
)
259265

260266
def test_unsuccessful_identify(self):
261-
# assert identify returns False when the wx_variable isn't correct
267+
# assert identify returns False when the wx_variable
268+
# isn't correct and a warning is logged.
262269
self.filepath = self.filepath.replace('HTSGW_Sfc', 'Not_wx_variable')
263-
self.assertFalse(self.layer_handler['gdwps'].identify(self.filepath))
270+
with self.assertLogs(
271+
'geomet_data_registry.layer.gdwps', level='WARNING'
272+
) as warn:
273+
self.assertFalse(
274+
self.layer_handler['gdwps'].identify(self.filepath)
275+
)
276+
# assert a single LOGGER.warning was called
277+
self.assertEqual(len(warn.records), 1)
264278

265279

266280
if __name__ == '__main__':

tests/test_geps.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ def test_super_init(self):
7171
# assert super().__init__() was called with the correct provider def
7272
self.mocked_base_init.assert_called_with({'name': 'geps'})
7373

74+
def test_repr(self):
75+
self.assertEqual(
76+
repr(self.layer_handler['geps']),
77+
'<ModelGEPSLayer> geps'
78+
)
79+
7480

7581
class TestIdentify(unittest.TestCase, Setup):
7682
def setUp(self):
@@ -226,11 +232,19 @@ def test_invalid_interval_identify(self):
226232
)
227233

228234
def test_unsuccessful_identify(self):
229-
# assert identify returns False when the wx_variable isn't correct
235+
# assert identify returns False when the wx_variable
236+
# isn't correct and a warning is logged.
230237
self.filepath = self.filepath.replace(
231238
'HEATX_TGL_2m', 'Not_wx_variable'
232239
)
233-
self.assertFalse(self.layer_handler['geps'].identify(self.filepath))
240+
with self.assertLogs(
241+
'geomet_data_registry.layer.geps', level='WARNING'
242+
) as warn:
243+
self.assertFalse(
244+
self.layer_handler['geps'].identify(self.filepath)
245+
)
246+
# assert a single LOGGER.warning was called
247+
self.assertEqual(len(warn.records), 1)
234248

235249

236250
if __name__ == '__main__':

tests/test_hrdpa.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ def test_super_init(self):
7171
# assert super().__init__() was called with the correct provider def
7272
self.mocked_base_init.assert_called_with({'name': 'hrdpa'})
7373

74+
def test_repr(self):
75+
self.assertEqual(
76+
repr(self.layer_handler['hrdpa']),
77+
'<HrdpaLayer> hrdpa'
78+
)
79+
7480

7581
class TestIdentify(unittest.TestCase, Setup):
7682
def setUp(self):
@@ -154,11 +160,19 @@ def test_items_identify(self):
154160
self.assertListEqual(expected_items, self.layer_handler['hrdpa'].items)
155161

156162
def test_unsuccessful_identify(self):
157-
# assert identify returns False when the wx_variable isn't correct
163+
# assert identify returns False when the wx_variable
164+
# isn't correct and a warning is logged.
158165
self.filepath = self.filepath.replace(
159166
'APCP-006-0100cutoff_SFC_0', 'Not_wx_variable'
160167
)
161-
self.assertFalse(self.layer_handler['hrdpa'].identify(self.filepath))
168+
with self.assertLogs(
169+
'geomet_data_registry.layer.hrdpa', level='WARNING'
170+
) as warn:
171+
self.assertFalse(
172+
self.layer_handler['hrdpa'].identify(self.filepath)
173+
)
174+
# assert a single LOGGER.warning was called
175+
self.assertEqual(len(warn.records), 1)
162176

163177

164178
class TestAddTimeKey(unittest.TestCase, Setup):

tests/test_model_gem_global.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ def test_super_init(self):
7373
# assert super().__init__() was called with the correct provider def
7474
self.mocked_base_init.assert_called_with({'name': 'model_gem_global'})
7575

76+
def test_repr(self):
77+
self.assertEqual(
78+
repr(self.layer_handler['model_gem_global']),
79+
'<ModelGemGlobalLayer> model_gem_global'
80+
)
81+
7682

7783
class TestIdentify(unittest.TestCase, Setup):
7884
def setUp(self):
@@ -253,11 +259,17 @@ def test_invalid_interval_identify(self):
253259
)
254260

255261
def test_unsuccessful_identify(self):
256-
# assert identify returns False when the wx_variable isn't correct
262+
# assert identify returns False when the wx_variable
263+
# isn't correct and a warning is logged.
257264
self.filepath = self.filepath.replace('UGRD_ISBL_1015', 'Not wx_var')
258-
self.assertFalse(
259-
self.layer_handler['model_gem_global'].identify(self.filepath)
260-
)
265+
with self.assertLogs(
266+
'geomet_data_registry.layer.model_gem_global', level='WARNING'
267+
) as warn:
268+
self.assertFalse(
269+
self.layer_handler['model_gem_global'].identify(self.filepath)
270+
)
271+
# assert a single LOGGER.warning was called
272+
self.assertEqual(len(warn.records), 1)
261273

262274

263275
if __name__ == '__main__':

tests/test_model_gem_regional.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@ def test_super_init(self):
7575
{'name': 'model_gem_regional'}
7676
)
7777

78+
def test_repr(self):
79+
self.assertEqual(
80+
repr(self.layer_handler['model_gem_regional']),
81+
'<ModelGemRegionalLayer> model_gem_regional'
82+
)
83+
7884

7985
class TestIdentify(unittest.TestCase, Setup):
8086
def setUp(self):
@@ -253,13 +259,20 @@ def test_invalid_interval_identify(self):
253259
)
254260

255261
def test_unsuccessful_identify(self):
256-
# assert identify returns False when the wx_variable isn't correct
262+
# assert identify returns False when the wx_variable
263+
# isn't correct and a warning is logged.
257264
self.filepath = self.filepath.replace(
258265
'ABSV_ISBL_250', 'Not_wx_variable'
259266
)
260-
self.assertFalse(
261-
self.layer_handler['model_gem_regional'].identify(self.filepath)
262-
)
267+
with self.assertLogs(
268+
'geomet_data_registry.layer.model_gem_regional', level='WARNING'
269+
) as warn:
270+
self.assertFalse(
271+
self.layer_handler['model_gem_regional']
272+
.identify(self.filepath)
273+
)
274+
# assert a single LOGGER.warning was called
275+
self.assertEqual(len(warn.records), 1)
263276

264277

265278
if __name__ == '__main__':

0 commit comments

Comments
 (0)