diff --git a/cf_units/__init__.py b/cf_units/__init__.py index de170d65..ad71097c 100644 --- a/cf_units/__init__.py +++ b/cf_units/__init__.py @@ -1128,7 +1128,7 @@ def is_unknown(self): False """ - return self.category == _CATEGORY_UNKNOWN + return self.category == _CATEGORY_UNKNOWN or self.ut_unit is None def is_no_unit(self): """ diff --git a/cf_units/tests/test_unit.py b/cf_units/tests/test_unit.py index 286b6665..ebf42fc5 100644 --- a/cf_units/tests/test_unit.py +++ b/cf_units/tests/test_unit.py @@ -1,4 +1,4 @@ -# (C) British Crown Copyright 2010 - 2018, Met Office +# (C) British Crown Copyright 2010 - 2019, Met Office # # This file is part of cf-units. # @@ -747,6 +747,12 @@ def test_known_unit(self): u = Unit('meters') self.assertFalse(u.is_unknown()) + def test_no_ut_pointer(self): + # Test that a unit that was poorly constructed has a + # degree of tolerance by making it unknown. + # https://github.com/SciTools/cf-units/issues/133 refers. + self.assertTrue(Unit.__new__(Unit).is_unknown()) + class Test_is_no_unit(unittest.TestCase): diff --git a/cf_units/tests/unit/unit/test_Unit.py b/cf_units/tests/unit/unit/test_Unit.py index 03dfa9b4..ea66e73f 100644 --- a/cf_units/tests/unit/unit/test_Unit.py +++ b/cf_units/tests/unit/unit/test_Unit.py @@ -1,4 +1,4 @@ -# (C) British Crown Copyright 2015 - 2018, Met Office +# (C) British Crown Copyright 2015 - 2019, Met Office # # This file is part of cf-units. # @@ -249,5 +249,14 @@ def test_not_time_unit(self): self.assertFalse(result) +class Test_format(unittest.TestCase): + def test_invalid_ut_unit(self): + # https://github.com/SciTools/cf-units/issues/133 flagged up that + # format should be a little more tolerant of a Unit that has not been + # constructed correctly when using pytest. + unit = Unit.__new__(Unit) + self.assertEqual(unit.format(), 'unknown') + + if __name__ == '__main__': unittest.main()