Skip to content

Commit 0dbec2e

Browse files
authored
Merge pull request romgar#128 from hsmett/hsmett/tox
Python-Django matrix & Django 2.0 support
2 parents d720df1 + d1a506a commit 0dbec2e

File tree

6 files changed

+103
-66
lines changed

6 files changed

+103
-66
lines changed

.travis.yml

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,44 @@
11
language: python
22

3-
python:
4-
- 2.7
5-
- 3.5
6-
7-
env:
8-
- TOXENV=django18
9-
- TOXENV=django19
10-
- TOXENV=django110
11-
- TOXENV=coverage
12-
- TOXENV=postgresql
13-
- TOXENV=flake8
3+
matrix:
4+
include:
5+
# Python version is just for the look on travis.
6+
- python: 2.7
7+
env: TOXENV=py27-django18
8+
- python: 2.7
9+
env: TOXENV=py27-django19
10+
- python: 2.7
11+
env: TOXENV=py27-django110
12+
- python: 2.7
13+
env: TOXENV=py27-django111
14+
- python: 3.4
15+
env: TOXENV=py34-django18
16+
- python: 3.4
17+
env: TOXENV=py34-django19
18+
- python: 3.4
19+
env: TOXENV=py34-django110
20+
- python: 3.4
21+
env: TOXENV=py34-django111
22+
- python: 3.5
23+
env: TOXENV=py35-django18
24+
- python: 3.5
25+
env: TOXENV=py35-django19
26+
- python: 3.5
27+
env: TOXENV=py35-django110
28+
- python: 3.5
29+
env: TOXENV=py35-django111
30+
- python: 3.6
31+
env: TOXENV=py36-django111
32+
- python: 3.6
33+
env: TOXENV=py36-django20
34+
- python: 2.7
35+
env: TOXENV=py27-flake8
36+
- python: 3.6
37+
env: TOXENV=py36-flake8
38+
- python: 3.6
39+
env: TOXENV=py36-django111-coverage
40+
- python: 3.6
41+
env: TOXENV=py36-django111-postgresql
1442

1543
services:
1644
- postgresql

ChangeLog.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ ChangeLog
66
master (unreleased)
77
-------------------
88

9+
*New:*
10+
- Test against the whole Python-Django matrix with Tox & Travis
11+
12+
*Bugfix:*
13+
- Fix tests for Django 2.0
914

1015
.. _v1.3.1:
1116

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
Django>=1.8
2-
pytz>=2015.7
2+
pytz>=2015.7

tests-requirements.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
pytest==3.0.6
2+
pytest-django==3.1.2
3+
jsonfield==1.0.3
4+
pytz

tests/models.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ class TestModelWithDecimalField(DirtyFieldsMixin, models.Model):
1818

1919

2020
class TestModelWithForeignKey(DirtyFieldsMixin, models.Model):
21-
fkey = models.ForeignKey(TestModel)
21+
fkey = models.ForeignKey(TestModel, on_delete=models.CASCADE)
2222

2323

2424
class TestMixedFieldsModel(DirtyFieldsMixin, models.Model):
25-
fkey = models.ForeignKey(TestModel)
25+
fkey = models.ForeignKey(TestModel, on_delete=models.CASCADE)
2626
characters = models.CharField(blank=True, max_length=80)
2727

2828

2929
class TestModelWithOneToOneField(DirtyFieldsMixin, models.Model):
30-
o2o = models.OneToOneField(TestModel)
30+
o2o = models.OneToOneField(TestModel, on_delete=models.CASCADE)
3131

3232

3333
class TestModelWithNonEditableFields(DirtyFieldsMixin, models.Model):
@@ -38,7 +38,7 @@ class TestModelWithNonEditableFields(DirtyFieldsMixin, models.Model):
3838

3939

4040
class TestModelWithSelfForeignKey(DirtyFieldsMixin, models.Model):
41-
fkey = models.ForeignKey("self", blank=True, null=True)
41+
fkey = models.ForeignKey("self", blank=True, null=True, on_delete=models.CASCADE)
4242

4343

4444
class OrdinaryTestModel(models.Model):
@@ -47,7 +47,7 @@ class OrdinaryTestModel(models.Model):
4747

4848

4949
class OrdinaryTestModelWithForeignKey(models.Model):
50-
fkey = models.ForeignKey(OrdinaryTestModel)
50+
fkey = models.ForeignKey(OrdinaryTestModel, on_delete=models.CASCADE)
5151

5252

5353
class SubclassModel(TestModel):
@@ -108,8 +108,9 @@ class TestModelWithoutM2MCheck(DirtyFieldsMixin, models.Model):
108108

109109

110110
class TestDoubleForeignKeyModel(DirtyFieldsMixin, models.Model):
111-
fkey1 = models.ForeignKey(TestModel)
112-
fkey2 = models.ForeignKey(TestModel, null=True, related_name='fkey2')
111+
fkey1 = models.ForeignKey(TestModel, on_delete=models.CASCADE)
112+
fkey2 = models.ForeignKey(TestModel, null=True, related_name='fkey2',
113+
on_delete=models.CASCADE)
113114

114115

115116
if is_postgresql_env_with_json_field():
@@ -128,7 +129,8 @@ class TestModelWithSpecifiedFields(DirtyFieldsMixin, models.Model):
128129
class TestModelWithSpecifiedFieldsAndForeignKey(DirtyFieldsMixin, models.Model):
129130
boolean1 = models.BooleanField(default=True)
130131
boolean2 = models.BooleanField(default=True)
131-
fk_field = models.OneToOneField(TestModel, null=True)
132+
fk_field = models.OneToOneField(TestModel, null=True,
133+
on_delete=models.CASCADE)
132134
FIELDS_TO_CHECK = ['fk_field_id']
133135

134136

tox.ini

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,64 @@
11
[tox]
2+
skipsdist = True
23
envlist =
3-
django18
4-
django19
5-
django110
6-
django111
7-
coverage
8-
postgresql
9-
flake8
10-
11-
[flake8]
12-
ignore = E501
4+
py{27,34,35}-django{18,19,110,111}
5+
py36-django{111,20}
6+
py{27,36}-flake8
7+
py36-django111-coverage
8+
py36-django111-postgresql
139

1410
[testenv]
11+
usedevelop = True
12+
pip_pre = False
1513
setenv =
1614
PYTHONPATH = {toxinidir}
15+
deps =
16+
-rtests-requirements.txt
17+
django18: Django>=1.8,<1.8.99
18+
django19: Django>=1.9,<1.9.99
19+
django110: Django>=1.10,<1.10.99
20+
django111: Django>=1.11,<1.11.99
21+
django20: Django>=2.0,<2.0.99
1722
commands =
23+
python --version
24+
pip freeze -l
1825
py.test --ds=tests.django_settings -v
19-
deps =
20-
pytest==3.0.6
21-
pytest-django==3.1.2
22-
jsonfield==1.0.3
23-
pytz
24-
25-
[testenv:django18]
26-
deps =
27-
django>=1.8,<1.8.99
28-
{[testenv]deps}
29-
30-
[testenv:django19]
31-
deps =
32-
django>=1.9,<1.9.99
33-
{[testenv]deps}
3426

35-
[testenv:django110]
36-
deps =
37-
django>=1.10,<1.10.99
38-
{[testenv]deps}
27+
[flake8]
28+
ignore = E501
3929

40-
[testenv:django111]
41-
deps =
42-
django>=1.11,<1.11.99
43-
{[testenv]deps}
30+
[testenv:py27-flake8]
31+
basepython = python2.7
32+
deps = flake8
33+
commands =
34+
python --version
35+
flake8 src tests
4436

45-
[testenv:postgresql]
46-
setenv =
47-
PYTHONPATH = {toxinidir}
37+
[testenv:py36-flake8]
38+
basepython = python3.6
39+
deps = flake8
4840
commands =
49-
py.test --ds=tests.postgresql_django_settings -v
41+
python --version
42+
flake8 src tests
43+
44+
[testenv:py36-django111-postgresql]
45+
basepython = python3.6
5046
deps =
51-
django>=1.11,<1.11.99
47+
-rtests-requirements.txt
5248
psycopg2
53-
{[testenv]deps}
5449
passenv=POSTGRES_NAME POSTGRES_USER POSTGRES_PASSWORD
50+
commands =
51+
python --version
52+
pip freeze -l
53+
py.test --ds=tests.postgresql_django_settings -v
5554

56-
[testenv:coverage]
57-
commands = coverage run --source dirtyfields -m py.test --ds=tests.django_settings
55+
[testenv:py36-django111-coverage]
56+
basepython = python3.6
5857
deps =
58+
-rtests-requirements.txt
5959
coverage
60-
{[testenv:django110]deps}
61-
62-
[testenv:flake8]
63-
deps = flake8
6460
commands =
6561
python --version
66-
flake8 src tests
62+
pip freeze -l
63+
coverage run --branch --source dirtyfields -m py.test --ds=tests.django_settings
64+
coverage report -m

0 commit comments

Comments
 (0)