@@ -1,5 +1,18 @@
[run]
-omit=
+branch = True
+omit =
*/lib/python*/site-packages/*
*/lib/python*/*
/usr/*
+ setup.py
+ # TODO(rhcarvalho): this is used to ignore test files from coverage report.
+ # We can make this less generic when we stick with a single test pattern in
+ # the repo.
+ test_*.py
+ *_tests.py
+
+[report]
+fail_under = 25
+[html]
+directory = cover
@@ -0,0 +1,6 @@
+"""pytest configuration"""
+def pytest_ignore_collect(path):
+ """Hook to ignore symlink files and directories."""
+ return path.islink()
@@ -28,3 +28,22 @@ lint_disable=fixme,locally-disabled,file-ignored,duplicate-code
exclude=.tox/*,utils/*,inventory/*
max_line_length = 120
ignore = E501,T003
+[tool:pytest]
+norecursedirs =
+ .*
+ __pycache__
+ cover
+ docs
+ # utils have its own config
+ utils
+python_files =
+ # TODO(rhcarvalho): rename test files to follow a single pattern. "test*.py"
+ # is Python unittest's default, while pytest discovers both "test_*.py" and
+ # "*_test.py" by default.
+addopts =
+ --cov=.
+ --cov-report=term
+ --cov-report=html
@@ -11,3 +11,4 @@ nose
coverage
mock
pytest
+pytest-cov
@@ -17,3 +17,5 @@ commands =
yamllint: python setup.py yamllint
unit: nosetests
generate_validation: python setup.py generate_validation