Skip to content

Commit ed6605e

Browse files
committed
Add nix flake check for python unit tests
1 parent 537afa9 commit ed6605e

File tree

5 files changed

+52
-8
lines changed

5 files changed

+52
-8
lines changed

flake.nix

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
pillowHeifOverrides = import ./lib/overrides-pillow-heif.nix { inherit pkgs; };
6363
psycopgOverrides = import ./lib/overrides-psycopg.nix { inherit pkgs; };
6464
opencvOverrides = import ./lib/overrides-opencv.nix { inherit pkgs; };
65+
strykeforceOverrides = import ./lib/overrides-strykeforce.nix { inherit pkgs workspace; };
6566
tbaApiOverrides = import ./lib/overrides-tba-api-v3client.nix { inherit pkgs; };
6667
in
6768
baseSet.overrideScope (
@@ -71,6 +72,7 @@
7172
pillowHeifOverrides
7273
psycopgOverrides
7374
opencvOverrides
75+
strykeforceOverrides
7476
tbaApiOverrides
7577
]
7678
);
@@ -79,6 +81,8 @@
7981

8082
in
8183
{
84+
checks = pythonSet.website.passthru.tests;
85+
8286
packages = {
8387
venv = pythonSet.mkVirtualEnv "strykeforce-env" workspace.deps.default;
8488

lib/overrides-strykeforce.nix

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
# lib,
3+
# nixosModule,
4+
pkgs,
5+
workspace,
6+
}:
7+
let
8+
inherit (pkgs.stdenv) isLinux mkDerivation;
9+
in
10+
final: prev: {
11+
#
12+
website = prev.website.overrideAttrs (old: {
13+
passthru = old.passthru // {
14+
tests =
15+
let
16+
venv = final.mkVirtualEnv "strykeforce-check-env" workspace.deps.default;
17+
in
18+
(old.tests or { })
19+
// {
20+
unittest = mkDerivation {
21+
name = "strykeforce-unittest";
22+
inherit (final.website) src;
23+
nativeBuildInputs = [ venv ];
24+
dontConfigure = true;
25+
dontInstall = true;
26+
27+
buildPhase = ''
28+
runHook preBuild
29+
export DJANGO_SETTINGS_MODULE="website.settings.test"
30+
export TBA_READ_KEY=
31+
32+
${venv}/bin/python ./website/manage.py test website.events.tests > $out 2>&1
33+
runHook postBuild
34+
'';
35+
};
36+
};
37+
};
38+
});
39+
}

website/events/management/commands/import_events.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,14 @@ def copy_tba_event(self, tba_event, event):
116116
case _:
117117
pass
118118

119-
def handle(self, *args, **options):
120-
self.download_events(options["year"])
121-
119+
def handle_events(self):
122120
for tba_event in self.events:
123121
with transaction.atomic():
124122
event, created = Event.objects.get_or_create(key=tba_event.key)
125123
if not event.edited_on:
126124
self.copy_tba_event(tba_event, event)
127125
event.save()
126+
127+
def handle(self, *args, **options):
128+
self.download_events(options["year"])
129+
self.handle_events()

website/events/tests/test_import_events.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def test_dont_overwrite_edited_events(self):
112112
command.awards = data["awards"]
113113
command.results = data["results"]
114114

115-
command.handle(year=2024)
115+
command.handle_events()
116116
event = Event.objects.get(key="2024misjo")
117117
self.assertIsNone(event.edited_on)
118118
self.assertEqual(event.status, "won")
@@ -121,6 +121,6 @@ def test_dont_overwrite_edited_events(self):
121121
event.edited_on = datetime.datetime.now()
122122
event.save()
123123

124-
command.handle(year=2024)
124+
command.handle_events()
125125
event = Event.objects.get(key="2024misjo")
126126
self.assertEqual(event.status, "edited")

website/settings/test.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import annotations
22

3-
from .dev import * # noqa
3+
from .base import * # noqa
4+
45

56
DEBUG = False
67

@@ -10,5 +11,3 @@
1011
"NAME": ":memory:",
1112
},
1213
}
13-
14-
MIGRATION_MODULES = {app: None for app in INSTALLED_APPS} # noqa

0 commit comments

Comments
 (0)