From e92a01224dfb5ffeee35f98c008f9dd801a39ad9 Mon Sep 17 00:00:00 2001 From: Omer Katz Date: Fri, 25 Jan 2013 19:26:14 +0300 Subject: [PATCH] The build will now fail if code coverage is below the CODE_COVERAGE_TRESHOLD setting. Currently set to 80. --- .travis.yml | 2 +- development.txt | 3 ++- rest_framework/runtests/runcoverage.py | 16 +++++++++++++--- rest_framework/tests/settings.py | 2 ++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index dd7e8bc60..c2a254333 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,6 @@ install: - pip install django-filter==0.5.4 --use-mirrors - pip install -r development.txt - export PYTHONPATH=. - script: - python rest_framework/runtests/runtests.py + - python rest_framework/runtests/runcoverage.py \ No newline at end of file diff --git a/development.txt b/development.txt index bf33a76c2..99ecbedbd 100644 --- a/development.txt +++ b/development.txt @@ -1,2 +1,3 @@ -coverage +pep>=1.4.1 +coverage>=3.6 django-discover-runner>=0.2.2 diff --git a/rest_framework/runtests/runcoverage.py b/rest_framework/runtests/runcoverage.py index eed63028d..4d1ca731c 100755 --- a/rest_framework/runtests/runcoverage.py +++ b/rest_framework/runtests/runcoverage.py @@ -13,6 +13,8 @@ import sys sys.path.append(os.path.join(os.path.dirname(__file__), "../..")) os.environ['DJANGO_SETTINGS_MODULE'] = 'rest_framework.tests.settings' +from django.conf import settings + try: from coverage import coverage except ImportError: @@ -20,7 +22,7 @@ except ImportError: exit(1) def report(cov, cov_files): - cov.report(cov_files) + pc = cov.report(cov_files) if '--html' in sys.argv: cov.html_report(cov_files, directory='coverage') @@ -28,6 +30,7 @@ def report(cov, cov_files): if '--xml' in sys.argv: cov.xml_report(cov_files, outfile='../../coverage.xml') + return pc def prepare_report(project_dir): cov_files = [] @@ -78,7 +81,7 @@ def run_tests(app): def main(): """Run the tests for rest_framework and generate a coverage report.""" - cov = coverage() + cov = coverage(data_file=".coverage", branch=True) cov.erase() cov.start() @@ -92,7 +95,14 @@ def main(): cov_files = prepare_report(project_dir) report(cov, cov_files) - sys.exit(failures) + pc = report(cov, cov_files) + if failures <> 0: + sys.exit(failures) + + if pc < settings.CODE_COVERAGE_THRESHOLD: + sys.exit(pc) + + sys.exit(0) if __name__ == '__main__': main() diff --git a/rest_framework/tests/settings.py b/rest_framework/tests/settings.py index af5617a9d..b2199cc6b 100644 --- a/rest_framework/tests/settings.py +++ b/rest_framework/tests/settings.py @@ -104,6 +104,8 @@ INSTALLED_APPS = ( TEST_RUNNER = 'discover_runner.runner.DiscoverRunner' +CODE_COVERAGE_THRESHOLD = 80 + STATIC_URL = '/static/' import django