Skip to content

Commit c349119

Browse files
authored
Merge pull request #14 from cmu-delphi/SD-27
Sd 27 tests
2 parents eb60540 + e8d46ff commit c349119

40 files changed

+1218
-320
lines changed

.flake8

Lines changed: 0 additions & 9 deletions
This file was deleted.

.github/workflows/tests.yaml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Django Tests
2+
on: [pull_request, push]
3+
4+
jobs:
5+
test:
6+
runs-on: ubuntu-latest
7+
8+
env:
9+
MYSQL_ROOT_PASSWORD: mysql_root_password
10+
MYSQL_DATABASE: mysql_database
11+
MYSQL_USER: mysql_user
12+
MYSQL_PASSWORD: mysql_password
13+
MYSQL_HOST: 127.0.0.1
14+
MYSQL_PORT: 3306
15+
16+
services:
17+
mysql:
18+
image: mysql:latest
19+
env:
20+
MYSQL_ROOT_PASSWORD: ${{ env.MYSQL_ROOT_PASSWORD }}
21+
MYSQL_DATABASE: ${{ env.MYSQL_DATABASE }}
22+
MYSQL_USER: ${{ env.MYSQL_USER }}
23+
MYSQL_PASSWORD: ${{ env.MYSQL_PASSWORD }}
24+
ports:
25+
- 3306:3306
26+
options: >-
27+
--health-cmd="mysqladmin ping"
28+
--health-interval=10s
29+
--health-timeout=5s
30+
--health-retries=3
31+
32+
steps:
33+
- name: Checkout code
34+
uses: actions/checkout@v2
35+
36+
- name: Set up Python
37+
uses: actions/setup-python@v2
38+
with:
39+
python-version: "3.10"
40+
41+
- name: Install dependencies
42+
run: |
43+
python3 -m pip install --upgrade pip
44+
sudo apt-get update -y
45+
sudo apt-get install mysql-client -y
46+
sudo apt-get install graphviz graphviz-dev -y
47+
pip install pipenv
48+
pipenv requirements > requirements.txt
49+
pip install -r requirements.txt
50+
51+
- name: Make migrations
52+
env:
53+
MYSQL_ROOT_PASSWORD: ${{ env.MYSQL_ROOT_PASSWORD }}
54+
MYSQL_DATABASE: ${{ env.MYSQL_DATABASE }}
55+
MYSQL_USER: ${{ env.MYSQL_USER }}
56+
MYSQL_PASSWORD: ${{ env.MYSQL_PASSWORD }}
57+
MYSQL_HOST: 127.0.0.1
58+
MYSQL_PORT: ${{ env.MYSQL_PORT }}
59+
60+
run: |
61+
mysql -u root -p"${{ env.MYSQL_ROOT_PASSWORD }}" -e "GRANT ALL PRIVILEGES ON *.* TO '${{ env.MYSQL_USER }}'@'%';"
62+
python3 ./src/manage.py migrate
63+
64+
- name: Run linters
65+
run: |
66+
pip install flake8
67+
flake8 .
68+
69+
- name: Run tests
70+
env:
71+
MYSQL_ROOT_PASSWORD: ${{ env.MYSQL_ROOT_PASSWORD }}
72+
MYSQL_DATABASE: ${{ env.MYSQL_DATABASE }}
73+
MYSQL_USER: ${{ env.MYSQL_USER }}
74+
MYSQL_PASSWORD: ${{ env.MYSQL_PASSWORD }}
75+
MYSQL_HOST: ${{ env.MYSQL_HOST }}
76+
MYSQL_PORT: ${{ env.MYSQL_PORT }}
77+
78+
run: |
79+
python3 ./src/manage.py test

.isort.cfg

Lines changed: 0 additions & 5 deletions
This file was deleted.

Pipfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ linkpreview = "*"
2222
django-redis = "*"
2323
mysqlclient = "*"
2424
django-import-export = "*"
25+
coverage = "*"
26+
django-coverage-plugin = "*"
27+
django-extensions-models = "*"
28+
mypy = "*"
29+
django-stubs = "*"
2530

2631
[dev-packages]
2732
flake8 = "*"

Pipfile.lock

Lines changed: 356 additions & 182 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,36 @@ $ python manage.py test
3434
$ python manage.py runserver
3535
```
3636

37+
load fixtures
38+
```sh
39+
$ python manage.py loaddata .\fixtures\available_geography.json
40+
$ python manage.py loaddata .\fixtures\pathogens.json
41+
$ python manage.py loaddata .\fixtures\signal_categories.json
42+
$ python manage.py loaddata .\fixtures\signal_types.json
43+
```
44+
45+
if you need test coverage
46+
47+
```sh
48+
$ coverage erase
49+
$ coverage python manage.py test
50+
$ coverage report
51+
```
52+
53+
you can also get test coverage with one command
54+
```sh
55+
$ coverage erase && coverage run manage.py test && coverage report
56+
```
57+
58+
sort imports
59+
```sh
60+
$ isort .
61+
```
62+
check flake
63+
```sh
64+
$ flake8 --show-source
65+
```
66+
3767
### To run via docker
3868

3969
Install `Docker` and `docker-compose`

setup.cfg

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
[isort]
2+
multi_line_output=3
3+
force_grid_wrap = 3
4+
include_trailing_comma=True
5+
line_length=158
6+
7+
[flake8]
8+
max-line-length = 158
9+
max-complexity = 10
10+
exclude =
11+
.git,
12+
__pycache__,
13+
.env,
14+
venv,
15+
*/migrations
16+
17+
[mypy]
18+
mypy_path = src/
19+
files = src
20+
warn_return_any = True
21+
warn_unused_configs = True
22+
warn_redundant_casts = True
23+
warn_unused_ignores = True
24+
check_untyped_defs = True
25+
show_error_codes = True
26+
strict_optional = True
27+
ignore_missing_imports = True
28+
plugins =
29+
mypy_django_plugin.main
30+
31+
[mypy.plugins.django-stubs]
32+
django_settings_module = signal_documentation.settings

src/.coveragerc

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
[run]
2+
plugins = django_coverage_plugin
3+
source = .
4+
branch = True
5+
omit =
6+
*__init__*
7+
*asgi.py*
8+
*wsgi.py*
9+
*apps.py
10+
*manage.py
11+
*__init__.py
12+
*admin.py
13+
*forms.py
14+
*filters.py
15+
*urls.py
16+
*settings.py
17+
*templates/*
18+
templates/*
19+
*/manage.py
20+
*/resources.py
21+
*/tests/*
22+
*/assets/*
23+
*/staticfiles/*
24+
*/migrations/*
25+
26+
[html]
27+
directory = htmlcov
28+
29+
[report]
30+
fail_under = 90
File renamed without changes.

src/base/admin.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import Literal
2+
13
from django.contrib import admin
24

35
from base.models import Link
@@ -8,4 +10,4 @@ class LinkAdmin(admin.ModelAdmin):
810
"""
911
Admin interface for managing link objects.
1012
"""
11-
list_display = ('url', 'link_type')
13+
list_display: tuple[Literal['url'], Literal['link_type']] = ('url', 'link_type')

0 commit comments

Comments
 (0)