diff --git a/{{ cookiecutter.package_name }}/.codecov.yaml b/{{ cookiecutter.package_name }}/.codecov.yaml new file mode 100644 index 0000000..8fe09b7 --- /dev/null +++ b/{{ cookiecutter.package_name }}/.codecov.yaml @@ -0,0 +1,11 @@ +comment: off +coverage: + status: + project: + default: + threshold: 0.2% + +codecov: + require_ci_to_pass: false + notify: + wait_for_ci: true diff --git a/{{ cookiecutter.package_name }}/.coveragerc b/{{ cookiecutter.package_name }}/.coveragerc new file mode 100644 index 0000000..17874e8 --- /dev/null +++ b/{{ cookiecutter.package_name }}/.coveragerc @@ -0,0 +1,30 @@ +[run] +omit = + {{ cookiecutter.module_name }}/conftest.py + {{ cookiecutter.module_name }}/*setup_package* + {{ cookiecutter.module_name }}/extern/* + {{ cookiecutter.module_name }}/version* + */{{ cookiecutter.module_name }}/conftest.py + */{{ cookiecutter.module_name }}/*setup_package* + */{{ cookiecutter.module_name }}/extern/* + */{{ cookiecutter.module_name }}/version* + +[report] +exclude_lines = + # Have to re-enable the standard pragma + pragma: no cover + # Don't complain about packages we have installed + except ImportError + # Don't complain if tests don't hit assertions + raise AssertionError + raise NotImplementedError + # Don't complain about script hooks + def main(.*): + # Ignore branches that don't pertain to this version of Python + pragma: py{ignore_python_version} + # Don't complain about IPython completion helper + def _ipython_key_completions_ + # typing.TYPE_CHECKING is False at runtime + if TYPE_CHECKING: + # Ignore typing overloads + @overload diff --git a/{{ cookiecutter.package_name }}/pyproject.toml b/{{ cookiecutter.package_name }}/pyproject.toml index 6d97f2e..e0e4bbc 100644 --- a/{{ cookiecutter.package_name }}/pyproject.toml +++ b/{{ cookiecutter.package_name }}/pyproject.toml @@ -61,47 +61,3 @@ write_to = "{{ cookiecutter.module_name }}/_version.py" {%- else -%} write_to = "{{ cookiecutter.module_name }}/version.py" {%- endif %} - -[tool.pytest.ini_options] -testpaths = [ - "{{ cookiecutter.module_name }}", - "docs", -] -doctest_plus = "enabled" -text_file_format = "rst" -addopts = "--doctest-rst" - -[tool.coverage.run] -omit = [ - "{{ cookiecutter.module_name }}/_{{ cookiecutter._parent_project }}_init*", - "{{ cookiecutter.module_name }}/conftest.py", - "{{ cookiecutter.module_name }}/*setup_package*", - "{{ cookiecutter.module_name }}/tests/*", - "{{ cookiecutter.module_name }}/*/tests/*", - "{{ cookiecutter.module_name }}/extern/*", - "{{ cookiecutter.module_name }}/version*", - "*/{{ cookiecutter.module_name }}/_{{ cookiecutter._parent_project }}_init*", - "*/{{ cookiecutter.module_name }}/conftest.py", - "*/{{ cookiecutter.module_name }}/*setup_package*", - "*/{{ cookiecutter.module_name }}/tests/*", - "*/{{ cookiecutter.module_name }}/*/tests/*", - "*/{{ cookiecutter.module_name }}/extern/*", - "*/{{ cookiecutter.module_name }}/version*", -] - -[tool.coverage.report] -exclude_lines = [ - # Have to re-enable the standard pragma - "pragma: no cover", - # Don't complain about packages we have installed - "except ImportError", - # Don't complain if tests don't hit assertions - "raise AssertionError", - "raise NotImplementedError", - # Don't complain about script hooks - "def main(.*):", - # Ignore branches that don't pertain to this version of Python - "pragma: py{ignore_python_version}", - # Don't complain about IPython completion helper - "def _ipython_key_completions_", -] diff --git a/{{ cookiecutter.package_name }}/pytest.ini b/{{ cookiecutter.package_name }}/pytest.ini new file mode 100644 index 0000000..2da8814 --- /dev/null +++ b/{{ cookiecutter.package_name }}/pytest.ini @@ -0,0 +1,27 @@ +[pytest] +minversion = 7.0 +testpaths = + {{ cookiecutter.module_name }} + docs +norecursedirs = + .tox + build + docs/_build + docs/generated + *.egg-info + examples + {{ cookiecutter.module_name }}/_dev + .history + {{ cookiecutter.module_name }}/extern +doctest_plus = enabled +doctest_optionflags = NORMALIZE_WHITESPACE FLOAT_CMP ELLIPSIS +text_file_format = rst +addopts = --doctest-rst -p no:unraisableexception -p no:threadexception +filterwarnings = + # Turn all warnings into errors so they do not pass silently. + error + # Do not fail on pytest config issues (i.e. missing plugins) but do show them + always::pytest.PytestConfigWarning + # A list of warnings to ignore follows. If you add to this list, you MUST + # add a comment or ideally a link to an issue that explains why the warning + # is being ignored diff --git a/{{ cookiecutter.package_name }}/{{ cookiecutter.module_name }}/tests/test_example.py b/{{ cookiecutter.package_name }}/{{ cookiecutter.module_name }}/tests/test_example.py index 446761f..33d4574 100644 --- a/{{ cookiecutter.package_name }}/{{ cookiecutter.module_name }}/tests/test_example.py +++ b/{{ cookiecutter.package_name }}/{{ cookiecutter.module_name }}/tests/test_example.py @@ -7,11 +7,3 @@ def test_primes_c(): def test_primes(): from ..example_mod import primes assert primes(10) == [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] - - -def test_deprecation(): - import warnings - warnings.warn( - "This is deprecated, but shouldn't raise an exception, unless " - "enable_deprecations_as_exceptions() called from conftest.py", - DeprecationWarning)