8000 Fix order-dependent flaky tests related to UTF-8 support by dg98 · Pull Request #1093 · prometheus/client_python · GitHub
[go: up one dir, main page]

Skip to content

Fix order-dependent flaky tests related to UTF-8 support #1093

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 3, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 24 additions & 19 deletions tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,9 @@ def test_inc_not_observable(self):
assert_not_observable(counter.inc)

def test_exemplar_invalid_label_name(self):
enable_legacy_validation()
self.assertRaises(ValueError, self.counter.inc, exemplar={':o)': 'smile'})
self.assertRaises(ValueError, self.counter.inc, exemplar={'1': 'number'})
disable_legacy_validation()
with LegacyValidationContextManager():
self.assertRaises(ValueError, self.counter.inc, exemplar={':o)': 'smile'})
self.assertRaises(ValueError, self.counter.inc, exemplar={'1': 'number'})
self.counter.inc(exemplar={':o)': 'smile'})
self.counter.inc(exemplar={'1': 'number'})

Expand Down Expand Up @@ -510,12 +509,11 @@ def test_block_decorator_with_label(self):
self.assertEqual(1, value('hl_bucket', {'le': '+Inf', 'l': 'a'}))

def test_exemplar_invalid_legacy_label_name(self):
enable_legacy_validation()
self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={':o)': 'smile'})
self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={'1': 'number'})

with LegacyValidationContextManager():
self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={':o)': 'smile'})
self.assertRaises(ValueError, self.histogram.observe, 3.0, exemplar={'1': 'number'})
def test_exemplar_invalid_label_name(self):
disable_legacy_validation()
self.histogram.observe(3.0, exemplar={':o)': 'smile'})
self.histogram.observe(3.0, exemplar={'1': 'number'})

Expand Down Expand Up @@ -660,18 +658,17 @@ def test_labels_by_kwarg(self):
self.assertRaises(ValueError, self.two_labels.labels, {'a': 'x'}, b='y')

def test_invalid_legacy_names_raise(self):
enable_legacy_validation()
self.assertRaises(ValueError, Counter, '', 'help')
self.assertRaises(ValueError, Counter, '^', 'help')
self.assertRaises(ValueError, Counter, '', 'help', namespace='&')
self.assertRaises(ValueError, Counter, '', 'help', subsystem='(')
self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['^'])
self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['a:b'])
self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['__reserved'])
self.assertRaises(ValueError, Summary, 'c_total', '', labelnames=['quantile'])
with LegacyValidationContextManager():
self.assertRaises(ValueError, Counter, '', 'help')
self.assertRaises(ValueError, Counter, '^', 'help')
self.assertRaises(ValueError, Counter, '', 'help', namespace='&')
self.assertRaises(ValueError, Counter, '', 'help', subsystem='(')
self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['^'])
self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['a:b'])
self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['__reserved'])
self.assertRaises(ValueError, Summary, 'c_total', '', labelnames=['quantile'])

def test_invalid_names_raise(self):
disable_legacy_validation()
self.assertRaises(ValueError, Counter, '', 'help')
self.assertRaises(ValueError, Counter, '', 'help', namespace='&')
self.assertRaises(ValueError, Counter, '', 'help', subsystem='(')
Expand Down Expand Up @@ -1007,5 +1004,13 @@ def test_restricted_registry_does_not_yield_while_locked(self):
self.assertFalse(registry._lock.locked())


class LegacyValidationContextManager:
def __enter__(self):
enable_legacy_validation()

def __exit__(self, exc_type, exc_value, exc_tb):
disable_legacy_validation()


if __name__ == '__main__':
unittest.main()
0