diff --git a/prometheus_client/validation.py b/prometheus_client/validation.py index cdbba116..e46ce448 100644 --- a/prometheus_client/validation.py +++ b/prometheus_client/validation.py @@ -110,7 +110,7 @@ def _validate_labelnames(cls, labelnames): for l in labelnames: _validate_labelname(l) if l in cls._reserved_labelnames: - raise ValueError('Reserved label methe fric name: ' + l) + raise ValueError('Reserved label metric name: ' + l) # Duplicate names collapse distinct label sets during collection. duplicates = sorted(name for name, count in Counter(labelnames).items() if count > 1) if duplicates: @@ -126,4 +126,4 @@ def _validate_exemplar(exemplar): runes += len(k) runes += len(v) if runes > 128: - raise ValueError('Exemplar labels have %d UTF-8 characters, exceeding the limit of 128') + raise ValueError(f'Exemplar labels have {runes} UTF-8 characters, exceeding the limit of 128') diff --git a/tests/test_core.py b/tests/test_core.py index 2c29f79a..50ba18a4 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -133,12 +133,13 @@ def test_exemplar_unicode(self): def test_exemplar_too_long(self): # 129 characters should fail. - self.assertRaises(ValueError, self.counter.inc, exemplar={ - 'abcdefghijklmnopqrstuvwxyz': '26+16 characters', - 'x1234567': '8+15 characters', - 'zyxwvutsrqponmlkjihgfedcba': '26+16 characters', - 'y123456': '7+15 characters', - }) + with self.assertRaisesRegex(ValueError, 'Exemplar labels have 129 UTF-8 characters'): + self.counter.inc(exemplar={ + 'abcdefghijklmnopqrstuvwxyz': '26+16 characters', + 'x1234567': '8+15 characters', + 'zyxwvutsrqponmlkjihgfedcba': '26+16 characters', + 'y123456': '7+15 characters', + }) class TestDisableCreated(unittest.TestCase): @@ -461,7 +462,8 @@ def test_setting_buckets(self): self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, buckets=[3, 1]) def test_labels(self): - self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, labelnames=['le']) + with self.assertRaisesRegex(ValueError, 'Reserved label metric name: le'): + Histogram('h', 'help', registry=None, labelnames=['le']) self.labels.labels('a').observe(2) self.assertEqual(0, self.registry.get_sample_value('hl_bucket', {'le': '1.0', 'l': 'a'})) @@ -534,12 +536,13 @@ def test_exemplar_invalid_label_name(self): def test_exemplar_too_long(self): # 129 characters in total should fail. - self.assertRaises(ValueError, self.histogram.observe, 1.0, exemplar={ - 'abcdefghijklmnopqrstuvwxyz': '26+16 characters', - 'x1234567': '8+15 characters', - 'zyxwvutsrqponmlkjihgfedcba': '26+16 characters', - 'y123456': '7+15 characters', - }) + with self.assertRaisesRegex(ValueError, 'Exemplar labels have 129 UTF-8 characters'): + self.histogram.observe(1.0, exemplar={ + 'abcdefghijklmnopqrstuvwxyz': '26+16 characters', + 'x1234567': '8+15 characters', + 'zyxwvutsrqponmlkjihgfedcba': '26+16 characters', + 'y123456': '7+15 characters', + }) class TestInfo(unittest.TestCase): @@ -787,7 +790,8 @@ def test_invalid_names_raise(self): self.assertRaises(ValueError, Counter, '', 'help', namespace='&') self.assertRaises(ValueError, Counter, '', 'help', subsystem='(') self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['__reserved']) - self.assertRaises(ValueError, Summary, 'c_total', '', labelnames=['quantile']) + with self.assertRaisesRegex(ValueError, 'Reserved label metric name: quantile'): + Summary('c_total', '', labelnames=['quantile']) def test_duplicate_labelnames_raise_before_registration(self): # Repeated names would collapse distinct label sets on export.