summaryrefslogtreecommitdiff
path: root/tox.ini
blob: 085f438989089835e51bc32f3b564d74629ab87a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
[tox]
envlist = packaging, py27, py36, pep8, check_isort

[base]
deps =
    coverage
    Twisted>=15.1
    mock
    python-subunit
    junitxml

    # needed by some of the tests
    lxml

setenv =
    PYTHONDONTWRITEBYTECODE = no_byte_code

[testenv]
deps =
    {[base]deps}

setenv =
    {[base]setenv}

passenv = *

commands =
    /usr/bin/find "{toxinidir}" -name '*.pyc' -delete
    coverage run {env:COVERAGE_OPTS:} --source="{toxinidir}/synapse" \
        "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
    {env:DUMP_COVERAGE_COMMAND:coverage report -m}

[testenv:py27]

# As of twisted 16.4, trial tries to import the tests as a package (previously
# it loaded the files explicitly), which means they need to be on the
# pythonpath. Our sdist doesn't include the 'tests' package, so normally it
# doesn't work within the tox virtualenv.
#
# As a workaround, we tell tox to do install with 'pip -e', which just
# creates a symlink to the project directory instead of unpacking the sdist.
#
# (An alternative to this would be to set PYTHONPATH to include the project
# directory. Note two problems with this:
#
#   - if you set it via `setenv`, then it is also set during the 'install'
#     phase, which inhibits unpacking the sdist, so the virtualenv isn't
#     useful for anything else without setting PYTHONPATH similarly.
#
#   - `synapse` is also loaded from PYTHONPATH so even if you only set
#     PYTHONPATH for the test phase, we're still running the tests against
#     the working copy rather than the contents of the sdist. So frankly
#     you might as well use -e in the first place.
#
# )
usedevelop=true

[testenv:py27-postgres]
usedevelop=true
deps =
    {[base]deps}
     psycopg2
setenv =
    {[base]setenv}
    SYNAPSE_POSTGRES = 1

[testenv:py36]
usedevelop=true
commands =
    /usr/bin/find "{toxinidir}" -name '*.pyc' -delete
    coverage run {env:COVERAGE_OPTS:} --source="{toxinidir}/synapse" \
        "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests/config \
		tests/api/test_filtering.py \
		tests/api/test_ratelimiting.py \
		tests/appservice \
		tests/crypto \
		tests/events \
		tests/handlers/test_appservice.py \
		tests/handlers/test_auth.py \
		tests/handlers/test_device.py \
		tests/handlers/test_directory.py \
		tests/handlers/test_e2e_keys.py \
		tests/handlers/test_presence.py \
		tests/handlers/test_profile.py \
		tests/handlers/test_register.py \
		tests/replication/slave/storage/test_account_data.py \
		tests/replication/slave/storage/test_receipts.py \
		tests/storage/test_appservice.py \
		tests/storage/test_background_update.py \
		tests/storage/test_base.py \
		tests/storage/test__base.py \
		tests/storage/test_client_ips.py \
		tests/storage/test_devices.py \
		tests/storage/test_end_to_end_keys.py \
		tests/storage/test_event_push_actions.py \
		tests/storage/test_keys.py \
		tests/storage/test_presence.py \
		tests/storage/test_profile.py \
		tests/storage/test_registration.py \
		tests/storage/test_room.py \
		tests/storage/test_user_directory.py \
		tests/test_distributor.py \
		tests/test_dns.py \
		tests/test_preview.py \
		tests/test_test_utils.py \
		tests/test_types.py \
		tests/util} \
        {env:TOXSUFFIX:}
    {env:DUMP_COVERAGE_COMMAND:coverage report -m}

[testenv:packaging]
deps =
    check-manifest
commands =
    check-manifest

[testenv:pep8]
skip_install = True
basepython = python2.7
deps =
    flake8
commands = /bin/sh -c "flake8 synapse tests {env:PEP8SUFFIX:}"

[testenv:check_isort]
skip_install = True
deps = isort
commands = /bin/sh -c "isort -c -sp setup.cfg -rc synapse tests"

[testenv:check-newsfragment]
skip_install = True
deps = towncrier>=18.6.0rc1
commands =
   python -m towncrier.check --compare-with=origin/develop
basepython = python3.6