diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 00000000..5ce4e22e --- /dev/null +++ b/.coveragerc @@ -0,0 +1,12 @@ +[run] +branch = True +source = prometheus_client + +[paths] +source = + prometheus_client + .tox/*/lib/python*/site-packages/prometheus_client + .tox/pypy/site-packages/prometheus_client + +[report] +show_missing = True diff --git a/.gitignore b/.gitignore index 2849cc3e..043223b4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ dist *.egg-info *.pyc *.swp +.coverage.* +.coverage +.tox diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..f9674a57 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,30 @@ +sudo: false +cache: + directories: + - $HOME/.cache/pip + +language: python + +matrix: + include: + - python: "2.7" + env: TOXENV=py27 + - python: "2.7" + env: TOXENV=py27-nooptionals + - python: "3.4" + env: TOXENV=py34 + - python: "3.5" + env: TOXENV=py35 + - python: "3.5" + env: TOXENV=py35-nooptionals + - python: "pypy" + env: TOXENV=pypy + +install: + - pip install tox + +script: + - tox + +notifications: + email: false diff --git a/setup.py b/setup.py index 976ac0e7..463ed6fd 100644 --- a/setup.py +++ b/setup.py @@ -21,6 +21,14 @@ "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", "Topic :: System :: Monitoring", "License :: OSI Approved :: Apache Software License", ], diff --git a/tests/test_exposition.py b/tests/test_exposition.py index ebfc957b..4bf8d71c 100644 --- a/tests/test_exposition.py +++ b/tests/test_exposition.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals import os +import sys import threading import time import unittest @@ -160,6 +161,10 @@ def test_delete_with_groupingkey(self): self.assertEqual(self.requests[0][0].headers.get('content-type'), CONTENT_TYPE_LATEST) self.assertEqual(self.requests[0][1], b'') + @unittest.skipIf( + sys.platform == "darwin", + "instance_ip_grouping_key() does not work on macOS." + ) def test_instance_ip_grouping_key(self): self.assertTrue('' != instance_ip_grouping_key()['instance']) diff --git a/tox.ini b/tox.ini new file mode 100644 index 00000000..139aa481 --- /dev/null +++ b/tox.ini @@ -0,0 +1,38 @@ +[tox] +envlist = coverage-clean,py27,py34,py35,pypy,{py27,py35}-nooptionals,coverage-report + + +[base] +deps = + coverage + pytest + +[testenv] +deps = + {[base]deps} + twisted +commands = coverage run --parallel -m pytest {posargs} + + +; Ensure test suite passes if no optional dependencies are present. +[testenv:py27-nooptionals] +deps = {[base]deps} +commands = coverage run --parallel -m pytest {posargs} + +[testenv:py35-nooptionals] +deps = {[base]deps} +commands = coverage run --parallel -m pytest {posargs} + + +[testenv:coverage-clean] +deps = coverage +skip_install = true +commands = coverage erase + + +[testenv:coverage-report] +deps = coverage +skip_install = true +commands = + coverage combine + coverage report \ No newline at end of file