Skip to content

Commit 8762b04

Browse files
authored
tests: fix warnings, use default test runner (#411)
* tests: fix various warnings Replace deprecated assertEquals with assertEqual. Close file when reading SECRET_KEY in settings. * tests: replace deprecated nose by default runner * Use xmlrunner to generate JUnit reports in CI. * Rename test_scionlab-config to test_scionlab_config, as its not discovered otherwise. Also silence some logging. * Exlicitly serialize some VPN tests to allow --parallel * Avoid copying dev VPN CA to run/ Refer to the checked-in dev VPN CA directly in the development configuration, instead of painstakingly copying it. Historical background was that this file was not checked-in but generated using the initialize_root_ca command. Then it was later added to git to simplify the setup and make it easier to generate somewhat deterministic test certificates. At that time, we used a nose mechanism, `setup_package` to copy the file to run/ before running the tests. This doesn't work with django's default test runner. With hindsight, it really seems that the whole copying business was just unnecessarily complicated. * deps: bump django-extensions Fixes some internal deprecation warning.
1 parent e0f1d58 commit 8762b04

15 files changed

+117
-72
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ jobs:
101101
command: |
102102
. /tmp/venv/bin/activate
103103
mkdir -p test-reports/django/
104-
python manage.py test --with-xunit --xunit-file=test-reports/django/results.xml
104+
python manage.py test --parallel --testrunner 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
105105
when: always
106106
- store_test_results:
107107
path: test-reports

.circleci/setup/init-coord.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,4 @@
1515

1616
# wait a bit for the migrations in the django-entrypoint.sh are done:
1717
docker-compose exec -T coord appdeps.py --interval-secs 1 --wait-secs 60 --port-wait coord:8000
18-
docker-compose exec -T coord /bin/bash -c \
19-
'./manage.py loaddata scionlab/fixtures/testdata.yaml; \
20-
cp scionlab/fixtures/dev_root_ca_*.pem run/'
18+
docker-compose exec -T coord ./manage.py loaddata scionlab/fixtures/testdata.yaml

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ coverage.xml
4949
*.cover
5050
.hypothesis/
5151
.pytest_cache/
52+
test-reports/
5253

5354
# Translations
5455
*.mo

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ These commands are also recorded in the preamble of the `*.txt` files.
8888
##### Unit tests:
8989

9090
```bash
91-
./manage.py test
91+
./manage.py test --parallel
9292
```
9393

9494
##### Style checker:

dev-requirements.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Testing:
2-
django-nose
32
django-webtest>=1.9.6
43
flake8
54
flake8-formatter-junit-xml
65
parameterized
6+
unittest-xml-reporting

dev-requirements.txt

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ beautifulsoup4==4.9.3 \
99
--hash=sha256:84729e322ad1d5b4d25f805bfa05b902dd96450f43842c4e99067d5e1369eb25 \
1010
--hash=sha256:fff47e031e34ec82bf17e00da8f592fe7de69aeea38be00523c04623c04fb666
1111
# via webtest
12-
django-nose==1.4.7 \
13-
--hash=sha256:304adc447ee35b889b733d7106004f98aa401d8387ddcada5d4f2239d86790a9 \
14-
--hash=sha256:a4885cd002d65fd2de96e2bb2563ef477c3fbe207009360c015fca5c3b5561b7
15-
# via -r dev-requirements.in
1612
django-webtest==1.9.7 \
1713
--hash=sha256:b9b4b94670c0ce533efc456d02dd55a0d0a7a8f7912eb30728dca2d59d7948b4 \
1814
--hash=sha256:c5a1e486a3d8d3623aa615b6db2f27de848aa7079303a84721e9a685f839796c
@@ -34,15 +30,72 @@ importlib-metadata==3.10.0 \
3430
junit-xml==1.9 \
3531
--hash=sha256:ec5ca1a55aefdd76d28fcc0b135251d156c7106fa979686a4b48d62b761b4732
3632
# via flake8-formatter-junit-xml
33+
lxml==4.7.1 \
34+
--hash=sha256:0607ff0988ad7e173e5ddf7bf55ee65534bd18a5461183c33e8e41a59e89edf4 \
35+
--hash=sha256:09b738360af8cb2da275998a8bf79517a71225b0de41ab47339c2beebfff025f \
36+
--hash=sha256:0a5f0e4747f31cff87d1eb32a6000bde1e603107f632ef4666be0dc065889c7a \
37+
--hash=sha256:0b5e96e25e70917b28a5391c2ed3ffc6156513d3db0e1476c5253fcd50f7a944 \
38+
--hash=sha256:1104a8d47967a414a436007c52f533e933e5d52574cab407b1e49a4e9b5ddbd1 \
39+
--hash=sha256:13dbb5c7e8f3b6a2cf6e10b0948cacb2f4c9eb05029fe31c60592d08ac63180d \
40+
--hash=sha256:2a906c3890da6a63224d551c2967413b8790a6357a80bf6b257c9a7978c2c42d \
41+
--hash=sha256:317bd63870b4d875af3c1be1b19202de34c32623609ec803b81c99193a788c1e \
42+
--hash=sha256:34c22eb8c819d59cec4444d9eebe2e38b95d3dcdafe08965853f8799fd71161d \
43+
--hash=sha256:36b16fecb10246e599f178dd74f313cbdc9f41c56e77d52100d1361eed24f51a \
44+
--hash=sha256:38d9759733aa04fb1697d717bfabbedb21398046bd07734be7cccc3d19ea8675 \
45+
--hash=sha256:3e26ad9bc48d610bf6cc76c506b9e5ad9360ed7a945d9be3b5b2c8535a0145e3 \
46+
--hash=sha256:41358bfd24425c1673f184d7c26c6ae91943fe51dfecc3603b5e08187b4bcc55 \
47+
--hash=sha256:447d5009d6b5447b2f237395d0018901dcc673f7d9f82ba26c1b9f9c3b444b60 \
48+
--hash=sha256:44f552e0da3c8ee3c28e2eb82b0b784200631687fc6a71277ea8ab0828780e7d \
49+
--hash=sha256:490712b91c65988012e866c411a40cc65b595929ececf75eeb4c79fcc3bc80a6 \
50+
--hash=sha256:4c093c571bc3da9ebcd484e001ba18b8452903cd428c0bc926d9b0141bcb710e \
51+
--hash=sha256:50d3dba341f1e583265c1a808e897b4159208d814ab07530202b6036a4d86da5 \
52+
--hash=sha256:534e946bce61fd162af02bad7bfd2daec1521b71d27238869c23a672146c34a5 \
53+
--hash=sha256:585ea241ee4961dc18a95e2f5581dbc26285fcf330e007459688096f76be8c42 \
54+
--hash=sha256:59e7da839a1238807226f7143c68a479dee09244d1b3cf8c134f2fce777d12d0 \
55+
--hash=sha256:5b0f782f0e03555c55e37d93d7a57454efe7495dab33ba0ccd2dbe25fc50f05d \
56+
--hash=sha256:5bee1b0cbfdb87686a7fb0e46f1d8bd34d52d6932c0723a86de1cc532b1aa489 \
57+
--hash=sha256:610807cea990fd545b1559466971649e69302c8a9472cefe1d6d48a1dee97440 \
58+
--hash=sha256:6308062534323f0d3edb4e702a0e26a76ca9e0e23ff99be5d82750772df32a9e \
59+
--hash=sha256:67fa5f028e8a01e1d7944a9fb616d1d0510d5d38b0c41708310bd1bc45ae89f6 \
60+
--hash=sha256:6a2ab9d089324d77bb81745b01f4aeffe4094306d939e92ba5e71e9a6b99b71e \
61+
--hash=sha256:6c198bfc169419c09b85ab10cb0f572744e686f40d1e7f4ed09061284fc1303f \
62+
--hash=sha256:6e56521538f19c4a6690f439fefed551f0b296bd785adc67c1777c348beb943d \
63+
--hash=sha256:6ec829058785d028f467be70cd195cd0aaf1a763e4d09822584ede8c9eaa4b03 \
64+
--hash=sha256:718d7208b9c2d86aaf0294d9381a6acb0158b5ff0f3515902751404e318e02c9 \
65+
--hash=sha256:735e3b4ce9c0616e85f302f109bdc6e425ba1670a73f962c9f6b98a6d51b77c9 \
66+
--hash=sha256:772057fba283c095db8c8ecde4634717a35c47061d24f889468dc67190327bcd \
67+
--hash=sha256:7b5e2acefd33c259c4a2e157119c4373c8773cf6793e225006a1649672ab47a6 \
68+
--hash=sha256:82d16a64236970cb93c8d63ad18c5b9f138a704331e4b916b2737ddfad14e0c4 \
69+
--hash=sha256:87c1b0496e8c87ec9db5383e30042357b4839b46c2d556abd49ec770ce2ad868 \
70+
--hash=sha256:8e54945dd2eeb50925500957c7c579df3cd07c29db7810b83cf30495d79af267 \
71+
--hash=sha256:9393a05b126a7e187f3e38758255e0edf948a65b22c377414002d488221fdaa2 \
72+
--hash=sha256:9fbc0dee7ff5f15c4428775e6fa3ed20003140560ffa22b88326669d53b3c0f4 \
73+
--hash=sha256:a1613838aa6b89af4ba10a0f3a972836128801ed008078f8c1244e65958f1b24 \
74+
--hash=sha256:a1bbc4efa99ed1310b5009ce7f3a1784698082ed2c1ef3895332f5df9b3b92c2 \
75+
--hash=sha256:a555e06566c6dc167fbcd0ad507ff05fd9328502aefc963cb0a0547cfe7f00db \
76+
--hash=sha256:a58d78653ae422df6837dd4ca0036610b8cb4962b5cfdbd337b7b24de9e5f98a \
77+
--hash=sha256:a5edc58d631170de90e50adc2cc0248083541affef82f8cd93bea458e4d96db8 \
78+
--hash=sha256:a5f623aeaa24f71fce3177d7fee875371345eb9102b355b882243e33e04b7175 \
79+
--hash=sha256:adaab25be351fff0d8a691c4f09153647804d09a87a4e4ea2c3f9fe9e8651851 \
80+
--hash=sha256:ade74f5e3a0fd17df5782896ddca7ddb998845a5f7cd4b0be771e1ffc3b9aa5b \
81+
--hash=sha256:b1d381f58fcc3e63fcc0ea4f0a38335163883267f77e4c6e22d7a30877218a0e \
82+
--hash=sha256:bf6005708fc2e2c89a083f258b97709559a95f9a7a03e59f805dd23c93bc3986 \
83+
--hash=sha256:d546431636edb1d6a608b348dd58cc9841b81f4116745857b6cb9f8dadb2725f \
84+
--hash=sha256:d5618d49de6ba63fe4510bdada62d06a8acfca0b4b5c904956c777d28382b419 \
85+
--hash=sha256:dfd0d464f3d86a1460683cd742306d1138b4e99b79094f4e07e1ca85ee267fe7 \
86+
--hash=sha256:e18281a7d80d76b66a9f9e68a98cf7e1d153182772400d9a9ce855264d7d0ce7 \
87+
--hash=sha256:e410cf3a2272d0a85526d700782a2fa92c1e304fdcc519ba74ac80b8297adf36 \
88+
--hash=sha256:e662c6266e3a275bdcb6bb049edc7cd77d0b0f7e119a53101d367c841afc66dc \
89+
--hash=sha256:ec9027d0beb785a35aa9951d14e06d48cfbf876d8ff67519403a2522b181943b \
90+
--hash=sha256:eed394099a7792834f0cb4a8f615319152b9d801444c1c9e1b1a2c36d2239f9e \
91+
--hash=sha256:f76dbe44e31abf516114f6347a46fa4e7c2e8bceaa4b6f7ee3a0a03c8eba3c17 \
92+
--hash=sha256:fc15874816b9320581133ddc2096b644582ab870cf6a6ed63684433e7af4b0d3 \
93+
--hash=sha256:fc9fb11b65e7bc49f7f75aaba1b700f7181d95d4e151cf2f24d51bfd14410b77
94+
# via unittest-xml-reporting
3795
mccabe==0.6.1 \
3896
--hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 \
3997
--hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f
4098
# via flake8
41-
nose==1.3.7 \
42-
--hash=sha256:9ff7c6cc443f8c51994b34a667bbcf45afd6d945be7477b52e97516fd17c53ac \
43-
--hash=sha256:dadcddc0aefbf99eea214e0f1232b94f2fa9bd98fa8353711dacb112bfcbbb2a \
44-
--hash=sha256:f1bffef9cbc82628f6e7d7b40d7e255aefaa1adb6a1b1d26c69a8b79e6208a98
45-
# via django-nose
4699
parameterized==0.8.1 \
47100
--hash=sha256:41bbff37d6186430f77f900d777e5bb6a24928a1c46fb1de692f8b52b8833b5c \
48101
--hash=sha256:9cbb0b69a03e8695d68b3399a8a5825200976536fe1cb79db60ed6a4c8c9efe9
@@ -69,6 +122,10 @@ typing-extensions==4.0.1 \
69122
--hash=sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e \
70123
--hash=sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b
71124
# via importlib-metadata
125+
unittest-xml-reporting==3.1.0 \
126+
--hash=sha256:c6178ad2d782c5c21d129758f089fd26da2cba8428cf2905994aa105a13fb317 \
127+
--hash=sha256:d16fe30ba6914ac01ee3d338f457ef602003bf33af9d2523b884de4535a1c375
128+
# via -r dev-requirements.in
72129
waitress==2.0.0 \
73130
--hash=sha256:29af5a53e9fb4e158f525367678b50053808ca6c21ba585754c77d790008c746 \
74131
--hash=sha256:69e1f242c7f80273490d3403c3976f3ac3b26e289856936d1f620ed48f321897

requirements.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ django-crispy-forms==1.11.2 \
7979
--hash=sha256:3db71ab06d17ec9d0195c086d3ad454da300ac268752ac3a4f63d72f7a490254 \
8080
--hash=sha256:88efa857ce6111bd696cc4f74057539a3456102fe9c3a3ece8868e1e4579e70a
8181
# via -r requirements.in
82-
django-extensions==3.1.2 \
83-
--hash=sha256:081828e985485662f62a22340c1506e37989d14b927652079a5b7cd84a82368b \
84-
--hash=sha256:17f85f4dcdd5eea09b8c4f0bad8f0370bf2db6d03e61b431fa7103fee29888de
82+
django-extensions==3.1.5 \
83+
--hash=sha256:28e1e1bf49f0e00307ba574d645b0af3564c981a6dfc87209d48cb98f77d0b1a \
84+
--hash=sha256:9238b9e016bb0009d621e05cf56ea8ce5cce9b32e91ad2026996a7377ca28069
8585
# via -r requirements.in
8686
django-maintenance-mode==0.16.0 \
8787
--hash=sha256:57595795062156d5f3f712c885acc18b77a303425bf78b5de80e7fd47d9ab433 \

scionlab/settings/common.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,8 @@ class VPNKeygenConf:
163163

164164
# finally grab the SECRET KEY
165165
try:
166-
SECRET_KEY = open(SECRET_FILE).read().strip()
166+
with open(SECRET_FILE) as f:
167+
SECRET_KEY = f.read().strip()
167168
except IOError:
168169
try:
169170
from django.core.management.utils import get_random_secret_key

scionlab/settings/development.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@
4545

4646
DATABASES = {'default': db}
4747

48-
# ##### APPLICATION CONFIGURATION #########################
49-
INSTALLED_APPS += [
50-
'django_nose',
51-
]
48+
# ##### TESTING ###########################################
5249

53-
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
50+
# Output file for JUnit XML test report, for xmlrunner.
51+
# Enabled in CI by
52+
# --testrunner 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
53+
TEST_OUTPUT_FILE_NAME = 'test-reports/django/results.xml'
5454

5555
# ##### EXTENSIONS CONFIGURATION ##########################
5656

@@ -64,8 +64,8 @@
6464

6565
# ##### VPN CONFIG OVERRIDES ##############################
6666
VPN_CA_KEY_PASSWORD = 'sci0nl4b'
67-
VPN_CA_KEY_PATH = os.path.join(BASE_DIR, 'run', 'dev_root_ca_key.pem')
68-
VPN_CA_CERT_PATH = os.path.join(BASE_DIR, 'run', 'dev_root_ca_cert.pem')
67+
VPN_CA_KEY_PATH = os.path.join(BASE_DIR, 'scionlab/fixtures/dev_root_ca_key.pem')
68+
VPN_CA_CERT_PATH = os.path.join(BASE_DIR, 'scionlab/fixtures/dev_root_ca_cert.pem')
6969

7070

7171
class VPNKeygenConfDev(VPNKeygenConf):

scionlab/tests/__init__.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +0,0 @@
1-
import os
2-
import shutil
3-
4-
from django.conf import settings
5-
6-
7-
def setup_package():
8-
app_dir = os.path.join(settings.BASE_DIR, "scionlab")
9-
dev_cert = "dev_root_ca_cert.pem"
10-
dev_key = "dev_root_ca_key.pem"
11-
os.makedirs(os.path.join(settings.BASE_DIR, "run/"), exist_ok=True)
12-
shutil.copyfile(os.path.join(app_dir, "fixtures/", dev_cert),
13-
os.path.join(settings.BASE_DIR, "run/", dev_cert))
14-
shutil.copyfile(os.path.join(app_dir, "fixtures/", dev_key),
15-
os.path.join(settings.BASE_DIR, "run/", dev_key))

0 commit comments

Comments
 (0)