Skip to content

Missing test data in source distribution #1112

Description

@mgorny

As of 0.22.1, the tests/certs and tests/proc directories are missing from the source distribution, which leads to test failures:

$ pytest
========================================================= test session starts =========================================================
platform linux -- Python 3.13.3, pytest-8.4.0, pluggy-1.6.0
rootdir: /tmp/prometheus_client-0.22.1configfile: pyproject.toml
collected 253 items tests/test_asgi.py ssssssss [ 3%]
tests/test_core.py ......................................................................................................... [ 44%]
tests/test_exposition.py ............................F.............................. [ 67%]
tests/test_gc_collector.py .. [ 68%]
tests/test_graphite_bridge.py ....... [ 71%]
tests/test_multiprocess.py ............................. [ 83%]
tests/test_parser.py ........................... [ 93%]
tests/test_platform_collector.py .. [ 94%]
tests/test_process_collector.py FFF. [ 96%]
tests/test_samples.py .. [ 96%]
tests/test_twisted.py s [ 97%]
tests/test_wsgi.py ....... [100%]
============================================================== FAILURES ===============================================================
___________________________________________ TestPushGateway.test_push_with_tls_auth_handler ___________________________________________
self = <test_exposition.TestPushGateway testMethod=test_push_with_tls_auth_handler>
deftest_push_with_tls_auth_handler(self):
defmy_auth_handler(url, method, timeout, headers, data):
certs_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'certs')
return tls_auth_handler(url, method, timeout, headers, data, os.path.join(certs_dir, "cert.pem"), os.path.join(certs_dir, "key.pem"))
> push_to_gateway(self.address, "my_job_with_tls_auth", self.registry, handler=my_auth_handler)
tests/test_exposition.py:362: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
prometheus_client/exposition.py:554: in push_to_gateway
_use_gateway('PUT', gateway, job, registry, grouping_key, timeout, handler)
prometheus_client/exposition.py:646: in _use_gateway
handler(
tests/test_exposition.py:360: in my_auth_handler
return tls_auth_handler(url, method, timeout, headers, data, os.path.join(certs_dir, "cert.pem"), os.path.join(certs_dir, "key.pem"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
url = 'http://localhost:44163/metrics/job/my_job_with_tls_auth', method = 'PUT', timeout = 30
headers = [('Content-Type', 'text/plain; version=0.0.4; charset=utf-8')], data = b'# HELP g help\n# TYPE g gauge\ng 0.0\n'
certfile = '/tmp/prometheus_client-0.22.1/tests/certs/cert.pem', keyfile = '/tmp/prometheus_client-0.22.1/tests/certs/key.pem'
cafile = None, protocol = <_SSLMethod.PROTOCOL_TLS_CLIENT: 16>, insecure_skip_verify = False
deftls_auth_handler(
url: str,
method: str,
timeout: Optional[float],
headers: List[Tuple[str, str]],
data: bytes,
certfile: str,
keyfile: str,
cafile: Optional[str] =None,
protocol: int= ssl.PROTOCOL_TLS_CLIENT,
insecure_skip_verify: bool=False,
) -> Callable[[], None]:
"""Handler that implements an HTTPS connection with TLS Auth.
The default protocol (ssl.PROTOCOL_TLS_CLIENT) will also enable
ssl.CERT_REQUIREDand SSLContext.check_hostname by default. This can be
disabled by setting insecure_skip_verify to True.
Both this handler and the TLS feature on pushgateay are experimental."""
context = ssl.SSLContext(protocol=protocol)
if cafile isnotNone:
context.load_verify_locations(cafile)
else:
context.load_default_certs()
if insecure_skip_verify:
context.check_hostname =False
context.verify_mode = ssl.CERT_NONE
> context.load_cert_chain(certfile=certfile, keyfile=keyfile)
E FileNotFoundError: [Errno 2] No such file or directory
prometheus_client/exposition.py:503: FileNotFoundError
_________________________________________________ TestProcessCollector.test_namespace _________________________________________________
self = <test_process_collector.TestProcessCollector testMethod=test_namespace>
deftest_namespace(self):
collector = ProcessCollector(proc=self.test_proc, pid=lambda: 26231, registry=self.registry, namespace='n')
collector._ticks =100
collector._pagesize =4096
> self.assertEqual(17.21, self.registry.get_sample_value('n_process_cpu_seconds_total'))
E AssertionError: 17.21 != None
tests/test_process_collector.py:30: AssertionError
__________________________________________________ TestProcessCollector.test_working __________________________________________________
self = <test_process_collector.TestProcessCollector testMethod=test_working>
deftest_working(self):
collector = ProcessCollector(proc=self.test_proc, pid=lambda: 26231, registry=self.registry)
collector._ticks =100
collector._pagesize =4096
> self.assertEqual(17.21, self.registry.get_sample_value('process_cpu_seconds_total'))
E AssertionError: 17.21 != None
tests/test_process_collector.py:17: AssertionError
________________________________________________ TestProcessCollector.test_working_584 ________________________________________________
self = <test_process_collector.TestProcessCollector testMethod=test_working_584>
deftest_working_584(self):
collector = ProcessCollector(proc=self.test_proc, pid=lambda: "584\n", registry=self.registry)
collector._ticks =100
collector._pagesize =4096
> self.assertEqual(0.0, self.registry.get_sample_value('process_cpu_seconds_total'))
E AssertionError: 0.0 != None
tests/test_process_collector.py:43: AssertionError
======================================================= short test summary info =======================================================
FAILED tests/test_exposition.py::TestPushGateway::test_push_with_tls_auth_handler - FileNotFoundError: [Errno 2] No such file or directory
FAILED tests/test_process_collector.py::TestProcessCollector::test_namespace - AssertionError: 17.21 != None
FAILED tests/test_process_collector.py::TestProcessCollector::test_working - AssertionError: 17.21 != None
FAILED tests/test_process_collector.py::TestProcessCollector::test_working_584 - AssertionError: 0.0 != None
============================================== 4 failed, 240 passed, 9 skipped in 4.19s ===============================================

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions