aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar ChrisJL <[email protected]>2022-08-04 09:31:18 +0100
committerGravatar GitHub <[email protected]>2022-08-04 09:31:18 +0100
commit86af9791cdd51e4670396bbbdea968168b74f4e8 (patch)
treefed9ef2740c58f02d07aed10fe0c8c509a17d848
parentMerge pull request #751 from python-discord/add-infraction-last-applied (diff)
parentMerge branch 'main' into speedup-tests (diff)
Merge pull request #741 from python-discord/speedup-tests
Remove IP Specification From Compose Ports
-rw-r--r--.github/workflows/lint-test.yaml1
-rw-r--r--docker-compose.yml6
-rwxr-xr-xmanage.py20
-rw-r--r--pyproject.toml2
4 files changed, 20 insertions, 9 deletions
diff --git a/.github/workflows/lint-test.yaml b/.github/workflows/lint-test.yaml
index f97cd758..a167ce32 100644
--- a/.github/workflows/lint-test.yaml
+++ b/.github/workflows/lint-test.yaml
@@ -97,7 +97,6 @@ jobs:
- name: Migrations and run tests with coverage.py
run: |
python manage.py makemigrations --check
- python manage.py migrate
coverage run manage.py test --no-input
coverage report -m
env:
diff --git a/docker-compose.yml b/docker-compose.yml
index eb987624..a6f4fd18 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -8,12 +8,12 @@
# and additionally use the Django development server which is
# unsuitable for production.
-version: "3.6"
+version: "3.8"
services:
postgres:
image: postgres:13-alpine
ports:
- - "127.0.0.1:7777:5432"
+ - "7777:5432"
environment:
POSTGRES_DB: pysite
POSTGRES_PASSWORD: pysite
@@ -38,7 +38,7 @@ services:
- admin.web
- staff.web
ports:
- - "127.0.0.1:8000:8000"
+ - "8000:8000"
depends_on:
postgres:
condition: service_healthy
diff --git a/manage.py b/manage.py
index 90912da3..697960c6 100755
--- a/manage.py
+++ b/manage.py
@@ -95,13 +95,15 @@ class SiteManager:
name="pythondiscord.local:8000"
)
- def prepare_server(self) -> None:
- """Perform preparation tasks before running the server."""
+ def prepare_environment(self) -> None:
+ """Perform common preparation tasks."""
django.setup()
print("Applying migrations.")
call_command("migrate", verbosity=self.verbosity)
+ def prepare_server(self) -> None:
+ """Preform runserver-specific preparation tasks."""
if self.debug:
# In Production, collectstatic is ran in the Docker image
print("Collecting static files.")
@@ -121,6 +123,7 @@ class SiteManager:
# Prevent preparing twice when in dev mode due to reloader
if not self.debug or in_reloader:
+ self.prepare_environment()
self.prepare_server()
print("Starting server.")
@@ -148,6 +151,11 @@ class SiteManager:
# Run gunicorn for the production server.
gunicorn.app.wsgiapp.run()
+ def run_tests(self) -> None:
+ """Prepare and run the test suite."""
+ self.prepare_environment()
+ call_command(*sys.argv[1:])
+
def clean_up_static_files(build_folder: Path) -> None:
"""Recursively loop over the build directory and fix links."""
@@ -168,8 +176,12 @@ def clean_up_static_files(build_folder: Path) -> None:
def main() -> None:
"""Entry point for Django management script."""
# Use the custom site manager for launching the server
- if len(sys.argv) > 1 and sys.argv[1] == "run":
- SiteManager(sys.argv).run_server()
+ if len(sys.argv) > 1 and sys.argv[1] in ("run", "test"):
+ manager = SiteManager(sys.argv)
+ if sys.argv[1] == "run":
+ manager.run_server()
+ elif sys.argv[1] == "test":
+ manager.run_tests()
# Pass any others directly to standard management commands
else:
diff --git a/pyproject.toml b/pyproject.toml
index 467fc8bc..8b98f94f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -51,7 +51,7 @@ start = "python manage.py run --debug"
makemigrations = "python manage.py makemigrations"
django_shell = "python manage.py shell"
test = "coverage run manage.py test"
-coverage = "coverage run manage.py test --no-input; coverage report -m"
+coverage = "coverage run manage.py test --no-input && coverage report -m"
report = "coverage report -m"
lint = "pre-commit run --all-files"
precommit = "pre-commit install"