Projet

Général

Profil

0001-tests-improvements-33788.patch

Emmanuel Cazenave, 02 juillet 2019 19:56

Télécharger (5,18 ko)

Voir les différences:

Subject: [PATCH 1/2] tests improvements (#33788)

Move tests in their own directory, add code coverage, run tests using postgres.
 Jenkinsfile                                   |  6 ++++-
 test_settings.py                              | 11 ++++++---
 django_journal/tests.py => tests/test_main.py | 23 +++++++++----------
 tox.ini                                       | 10 +++++---
 4 files changed, 31 insertions(+), 19 deletions(-)
 rename django_journal/tests.py => tests/test_main.py (72%)
Jenkinsfile
10 10
            }
11 11
            post {
12 12
                always {
13
                    junit 'junit.xml'
13
                    script {
14
                        utils = new Utils()
15
                        utils.publish_coverage('coverage.xml')
16
                    }
17
                    mergeJunitResults()
14 18
                }
15 19
            }
16 20
        }
test_settings.py
1
INSTALLED_APPS = ('django_journal', 'django.contrib.contenttypes' , 'django.contrib.auth', 'django.contrib.sessions', )
2
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3' }, }
1
INSTALLED_APPS = (
2
    'django_journal', 'django.contrib.contenttypes', 'django.contrib.auth',
3
    'django.contrib.sessions'
4
)
5
DATABASES = {
6
    'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2'}
7
}
3 8
SECRET_KEY = "django_tests_secret_key"
4
PASSWORD_HASHERS = ( 'django.contrib.auth.hashers.MD5PasswordHasher',)
9
PASSWORD_HASHERS = ('django.contrib.auth.hashers.MD5PasswordHasher',)
5 10
ROOT_URLCONF = 'test_urls'
django_journal/tests.py → tests/test_main.py
3 3
from django.db import transaction
4 4

  
5 5

  
6
from . import record
7
from . import actions
8
from . import models
6
from django_journal import record
7
from django_journal.actions import export_as_csv_generator
8
from django_journal.models import Journal
9 9

  
10 10

  
11 11
class JournalTestCase(TestCase):
12 12
    def setUp(self):
13
        models.JOURNAL_METADATA_CACHE_TIMEOUT = 0
14 13
        self.users = []
15 14
        self.groups = []
16 15
        with transaction.atomic():
......
30 29
                record('logout', '{user} logged out', user=self.users[i])
31 30

  
32 31
    def test_login(self):
33
        for i, event in zip(range(20), models.Journal.objects.for_tag('login').order_by('id')):
32
        for i, event in zip(range(20), Journal.objects.for_tag('login').order_by('id')):
34 33
            self.assertEqual(unicode(event), 'user{0} logged in'.format(i))
35 34

  
36 35
    def test_groups(self):
37
        for i, event in zip(range(40), models.Journal.objects.for_tag('group-changed').order_by('id')):
36
        for i, event in zip(range(40), Journal.objects.for_tag('group-changed').order_by('id')):
38 37
            self.assertEqual(unicode(event),
39 38
                    'user{0} gave group group{0} to user{1}'.format(i, (i+1)%20))
40 39

  
41 40
    def test_logout(self):
42
        for i, event in zip(range(20), models.Journal.objects.for_tag('logout').order_by('id')):
41
        for i, event in zip(range(20), Journal.objects.for_tag('logout').order_by('id')):
43 42
            self.assertEqual(unicode(event), 'user{0} logged out'.format(i))
44 43

  
45 44
    def test_export_as_csv(self):
46
        qs = models.Journal.objects.all()
47
        l = list(actions.export_as_csv_generator(qs))
45
        qs = Journal.objects.all()
46
        l = list(export_as_csv_generator(qs))
48 47
        self.assertEquals(set(l[0]), set(['time', 'tag', 'message', 'group', 'group__id', 'user', 'user__id', 'user1', 'user1__id', 'user2', 'user2__id']))
49
        l = list(actions.export_as_csv_generator(qs[:5]))
48
        l = list(export_as_csv_generator(qs[:5]))
50 49
        self.assertEquals(set(l[0]), set(['time', 'tag', 'message', 'user', 'user__id']))
51 50
        for user in self.users:
52 51
            user.delete()
53
        qs = models.Journal.objects.all()
54
        l = list(actions.export_as_csv_generator(qs))
52
        qs = Journal.objects.all()
53
        l = list(export_as_csv_generator(qs))
55 54
        self.assertEquals(l[1]['user'], '<deleted>')
56 55

  
tox.ini
1 1
[tox]
2
toxworkdir = /tmp/tox-{env:USER}/combo/{env:BRANCH_NAME:}
3
envlist = py2
2
toxworkdir = /tmp/tox-{env:USER}/django-journal/{env:BRANCH_NAME:}
3
envlist = py2-coverage
4 4

  
5 5

  
6 6
[testenv]
7
basepython = python2
7 8
usedevelop = True
8 9
deps =
10
  psycopg2
11
  pytest-cov
9 12
  pytest
10 13
  pytest-django
11 14
setenv =
12 15
  DJANGO_SETTINGS_MODULE=test_settings
16
  coverage: COVERAGE=--cov-append --cov-report xml --cov-report html --cov=django_journal/
13 17
commands =
14
  {posargs:py.test --junitxml=junit.xml django_journal/tests.py}
18
  py.test {posargs: {env:COVERAGE:} --junitxml=junit-{envname}.xml tests/}
15
-