From f0786c590bc34405df815f68ad8f6c1c17bc173a Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Fri, 8 Jan 2016 01:41:51 -0500 Subject: [PATCH 1/3] Added a TOX configuration to run CI against all supported Django versions. --- tox.ini | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tox.ini diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..f298cc7 --- /dev/null +++ b/tox.ini @@ -0,0 +1,31 @@ +[tox] +args_are_paths = false +envlist = + py27-{1.7,1.8,master}, + py32-{1.7,1.8}, + py33-{1.7,1.8}, + py34-{1.7,1.8,master}, + py35-{1.9,master} + +[testenv] +basepython = + py27: python2.7 + py32: python3.2 + py33: python3.3 + py34: python3.4 + py35: python3.5 +usedevelop = true +setenv = + PYTHONPATH=tests +commands = + {envbindir}/python -Wonce tests/manage.py test tests +deps = + py32: coverage>=3.4,<4.0 + {py27,py33,py34,py35}: coverage>=4.0 + flake8>=2.1.0 + mock>=1.0.1 + pylint>=0.23 + 1.7: Django>=1.7,<1.8 + 1.8: Django>=1.8,<1.9 + 1.9: Django>=1.9,<1.10 + master: https://github.com/django/django/archive/master.tar.gz From cc6b2315f5e707f780b520944c3f3ce78737034c Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Fri, 8 Jan 2016 01:42:33 -0500 Subject: [PATCH 2/3] Made the required changes to make the tests pass on all supported Django versions. --- discover_jenkins/results.py | 6 +++++- discover_jenkins/runner.py | 12 ++++++++++-- discover_jenkins/tasks/run_pep8.py | 2 +- discover_jenkins/tasks/with_coverage.py | 6 +++++- discover_jenkins/utils.py | 5 ++++- .../test_project/test_app/migrations/0001_initial.py | 10 +++------- tests/tests/test_runner.py | 4 ++++ tox.ini | 6 +++--- 8 files changed, 35 insertions(+), 16 deletions(-) diff --git a/discover_jenkins/results.py b/discover_jenkins/results.py index b901a61..8a80030 100644 --- a/discover_jenkins/results.py +++ b/discover_jenkins/results.py @@ -4,9 +4,13 @@ from datetime import datetime from itertools import groupby from xml.sax.saxutils import XMLGenerator from xml.sax.xmlreader import AttributesImpl -from django.utils.unittest import TextTestResult from discover_jenkins.utils import total_seconds +try: + from unittest import TextTestResult +except ImportError: + from django.utils.unittest import TextTestResult + try: from django.utils.encoding import smart_text except ImportError: diff --git a/discover_jenkins/runner.py b/discover_jenkins/runner.py index d876b83..9dfd952 100644 --- a/discover_jenkins/runner.py +++ b/discover_jenkins/runner.py @@ -4,8 +4,16 @@ from optparse import make_option import django from django.core.exceptions import ImproperlyConfigured -from django.utils import unittest -from django.utils.importlib import import_module + +try: + import unittest +except ImportError: + from django.utils import unittest + +try: + from importlib import import_module +except ImportError: + from django.utils.importlib import import_module try: # Django 1.6 diff --git a/discover_jenkins/tasks/run_pep8.py b/discover_jenkins/tasks/run_pep8.py index 47001e0..bcc2285 100644 --- a/discover_jenkins/tasks/run_pep8.py +++ b/discover_jenkins/tasks/run_pep8.py @@ -72,7 +72,7 @@ class Pep8Task(object): parser.add_argument("--pep8-ignore", dest="pep8-ignore", help="skip errors and warnings (e.g. E4,W)") parser.add_argument("--pep8-max-line-length", - dest="pep8-max-line-length", type='int', + dest="pep8-max-line-length", type=int, help="set maximum allowed line length (default: %d)" % pep8.MAX_LINE_LENGTH) parser.add_argument("--pep8-rcfile", dest="pep8-rcfile", diff --git a/discover_jenkins/tasks/with_coverage.py b/discover_jenkins/tasks/with_coverage.py index 248ef73..39b1419 100755 --- a/discover_jenkins/tasks/with_coverage.py +++ b/discover_jenkins/tasks/with_coverage.py @@ -3,9 +3,13 @@ import os from optparse import make_option -from coverage.control import coverage import django +try: + from coverage import coverage +except ImportError: + from coverage.control import coverage + from .. import settings diff --git a/discover_jenkins/utils.py b/discover_jenkins/utils.py index a569719..f4af515 100644 --- a/discover_jenkins/utils.py +++ b/discover_jenkins/utils.py @@ -1,7 +1,10 @@ import os.path import subprocess -from django.utils.importlib import import_module +try: + from importlib import import_module +except ImportError: + from django.utils.importlib import import_module from discover_jenkins.settings import PROJECT_APPS diff --git a/tests/test_project/test_app/migrations/0001_initial.py b/tests/test_project/test_app/migrations/0001_initial.py index 92da11b..9a4ea54 100644 --- a/tests/test_project/test_app/migrations/0001_initial.py +++ b/tests/test_project/test_app/migrations/0001_initial.py @@ -1,9 +1,5 @@ -from south.v2 import SchemaMigration +from django.db import migrations -class Migration(SchemaMigration): - def forwards(self, orm): - a = 1 # pyflakes/pylint violation - pass - def backwards(self, orm): - pass +class Migration(migrations.Migration): + a = 1 # pyflakes/pylint violation \ No newline at end of file diff --git a/tests/tests/test_runner.py b/tests/tests/test_runner.py index 51762df..c56d8f8 100644 --- a/tests/tests/test_runner.py +++ b/tests/tests/test_runner.py @@ -1,4 +1,7 @@ +from unittest import skipIf + from mock import MagicMock, patch +import django from django.test import TestCase from discover_jenkins import runner, tasks @@ -37,6 +40,7 @@ class TestCIRunner(TestCase): tasks.run_jshint.JSHintTask, tasks.run_sloccount.SlocCountTask]) + @skipIf(django.VERSION >= (1, 8), "optparse is not used on Django 1.8+") def test_get_task_options(self): """ For now, just do a simple test to make sure the right number of options diff --git a/tox.ini b/tox.ini index f298cc7..fa22bc9 100644 --- a/tox.ini +++ b/tox.ini @@ -1,11 +1,11 @@ [tox] args_are_paths = false envlist = - py27-{1.7,1.8,master}, + py27-{1.7,1.8,1.9,master}, py32-{1.7,1.8}, py33-{1.7,1.8}, - py34-{1.7,1.8,master}, - py35-{1.9,master} + py34-{1.7,1.8,1.9,master}, + py35-{1.8,1.9,master} [testenv] basepython = From 65dbdd83c655f16d6fe19f93955ab18d4524ffe3 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Fri, 8 Jan 2016 01:58:07 -0500 Subject: [PATCH 3/3] Added a TravisCI configuration file. --- .travis.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..90bf1c2 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,36 @@ +sudo: no + +language: python + +env: + - TOXENV=py27-1.7 + - TOXENV=py27-1.8 + - TOXENV=py27-1.9 + - TOXENV=py27-master + - TOXENV=py32-1.7 + - TOXENV=py32-1.8 + - TOXENV=py33-1.7 + - TOXENV=py33-1.8 + - TOXENV=py34-1.7 + - TOXENV=py34-1.8 + - TOXENV=py34-1.9 + - TOXENV=py34-master + +matrix: + include: + - python: 3.5 + env: TOXENV=py35-1.8 + - python: 3.5 + env: TOXENV=py35-1.9 + - python: 3.5 + env: TOXENV=py35-master + allow_failures: + - env: TOXENV=py27-master + - env: TOXENV=py34-master + - env: TOXENV=py35-master + +install: + - pip install tox + +script: + - tox