Skip to content

Commit 5de32fe

Browse files
authored
Merge pull request #11 from ngi-nix/housekeeping
Make Nix tests install Python dev deps
2 parents 92175bb + 8159885 commit 5de32fe

1 file changed

Lines changed: 56 additions & 46 deletions

File tree

etc/nix/flake.nix

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
let
2121

2222
vulnerablecode-src = ./../..;
23+
requirements =
24+
builtins.readFile (vulnerablecode-src + "/requirements.txt");
25+
requirementsDev =
26+
builtins.readFile (vulnerablecode-src + "/requirements-dev.txt");
2327

2428
# Extract version from setup.py.
2529
version = builtins.head (builtins.match ''.*version=["']?([^"',]+).*''
@@ -53,9 +57,9 @@
5357
# mach-nix release) is usually insufficient. Use
5458
# ./get-latest-pypi-deps-db.sh to obtain the data rev & hash.
5559
pypiDataRev =
56-
"e9b0fc6b92cd6efbca7ba3b3d4a551bcc13a73c5"; # 2021-03-27T08:13:04Z
60+
"8dcec158c51f8a96f316630679222e436c1b078c"; # 2021-06-16T08:41:20Z
5761
pypiDataSha256 =
58-
"1ssa48l2iz8kncby1gfrbds79mg114dkhpxrridwcq6q2c37p62s";
62+
"0499zl39aia74f0i7fkn5dsy8244dkmcw4vzd5nf4kai605j2jli";
5963
});
6064

6165
in {
@@ -65,16 +69,17 @@
6569
with final.pkgs; {
6670

6771
pythonEnv = machnixFor.${system}.mkPython {
68-
requirements =
69-
builtins.readFile (vulnerablecode-src + "/requirements.txt");
72+
requirements = ''
73+
${requirements}
74+
'';
7075
};
7176

7277
vulnerablecode = stdenv.mkDerivation {
7378
inherit version;
7479
name = "vulnerablecode-${version}";
7580
src = vulnerablecode-src;
7681
dontConfigure = true; # do not use ./configure
77-
propagatedBuildInputs = [ pythonEnv postgresql gitMinimal];
82+
propagatedBuildInputs = [ pythonEnv postgresql gitMinimal ];
7883

7984
postPatch = ''
8085
# Make sure the pycodestyle binary in $PATH is used.
@@ -110,48 +115,53 @@
110115
forAllSystems (system: self.packages.${system}.vulnerablecode);
111116

112117
# Tests run by 'nix flake check' and by Hydra.
113-
checks = forAllSystems (system: {
114-
inherit (self.packages.${system}) vulnerablecode;
115-
116-
vulnerablecode-test = with nixpkgsFor.${system};
117-
stdenv.mkDerivation {
118-
name = "${vulnerablecode.name}-test";
119-
120-
buildInputs = [ wget vulnerablecode ];
121-
122-
# Used by pygit2.
123-
# See https://github.com/NixOS/nixpkgs/pull/72544#issuecomment-582674047.
124-
SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
125-
126-
unpackPhase = "true";
127-
128-
buildPhase = ''
129-
source ${libSh}
130-
initPostgres $(pwd)
131-
export DJANGO_DEV=1
132-
${vulnerablecode}/manage.py migrate
118+
checks = forAllSystems (system:
119+
let
120+
pythonEnvDev = machnixFor.${system}.mkPython {
121+
requirements = ''
122+
${requirements}
123+
${requirementsDev}
133124
'';
134-
135-
doCheck = true;
136-
checkPhase = ''
137-
# Run pytest on the installed version. A running postgres
138-
# database server is needed.
139-
(
140-
cd ${vulnerablecode}
141-
black -l 100 --check .
142-
pytest -m "not webtest"
143-
)
144-
145-
# Launch the webserver and call the API.
146-
${vulnerablecode}/manage.py runserver &
147-
sleep 2
148-
wget http://127.0.0.1:8000/api/
149-
kill %1 # kill background task (i.e. webserver)
150-
'';
151-
152-
installPhase =
153-
"mkdir -p $out"; # make this derivation return success
154125
};
155-
});
126+
127+
in {
128+
inherit (self.packages.${system}) vulnerablecode;
129+
130+
vulnerablecode-test = with nixpkgsFor.${system};
131+
stdenv.mkDerivation {
132+
name = "${vulnerablecode.name}-test";
133+
134+
buildInputs = [ wget vulnerablecode pythonEnvDev ];
135+
136+
unpackPhase = "true";
137+
138+
buildPhase = ''
139+
source ${libSh}
140+
initPostgres $(pwd)
141+
export DJANGO_DEV=1
142+
${vulnerablecode}/manage.py migrate
143+
'';
144+
145+
doCheck = true;
146+
checkPhase = ''
147+
# Run pytest on the installed version. A running postgres
148+
# database server is needed.
149+
(
150+
cd ${vulnerablecode}
151+
black -l 100 --check .
152+
pytest -m "not webtest"
153+
)
154+
155+
# Launch the webserver and call the API.
156+
${vulnerablecode}/manage.py runserver &
157+
sleep 2
158+
wget http://127.0.0.1:8000/api/
159+
kill %1 # kill background task (i.e. webserver)
160+
'';
161+
162+
installPhase =
163+
"mkdir -p $out"; # make this derivation return success
164+
};
165+
});
156166
};
157167
}

0 commit comments

Comments
 (0)