python.tests: don't mix the two types of tests

The integration tests code was included in the environment tests. After
this commit it is hopefully clearer what belongs together.
This commit is contained in:
Frederik Rietdijk
2020-08-30 12:59:24 +02:00
parent 0610e03496
commit 5d8dd5c259
2 changed files with 75 additions and 70 deletions
+75 -70
View File
@@ -6,67 +6,81 @@
}: }:
let let
envs = let environmentTests = let
inherit python; envs = let
pythonEnv = python.withPackages(ps: with ps; [ ]); inherit python;
pythonVirtualEnv = python.withPackages(ps: with ps; [ virtualenv ]); pythonEnv = python.withPackages(ps: with ps; [ ]);
in { pythonVirtualEnv = python.withPackages(ps: with ps; [ virtualenv ]);
# Plain Python interpreter in {
plain = rec { # Plain Python interpreter
env = python; plain = rec {
interpreter = env.interpreter; env = python;
is_venv = "False"; interpreter = env.interpreter;
is_nixenv = "False"; is_venv = "False";
is_virtualenv = "False"; is_nixenv = "False";
}; is_virtualenv = "False";
} // lib.optionalAttrs (!python.isPyPy) { };
# Use virtualenv from a Nix env. } // lib.optionalAttrs (!python.isPyPy) {
nixenv-virtualenv = rec { # Use virtualenv from a Nix env.
env = runCommand "${python.name}-virtualenv" {} '' nixenv-virtualenv = rec {
${pythonVirtualEnv.interpreter} -m virtualenv $out env = runCommand "${python.name}-virtualenv" {} ''
''; ${pythonVirtualEnv.interpreter} -m virtualenv $out
interpreter = "${env}/bin/${python.executable}"; '';
is_venv = "False"; interpreter = "${env}/bin/${python.executable}";
is_nixenv = "True"; is_venv = "False";
is_virtualenv = "True"; is_nixenv = "True";
}; is_virtualenv = "True";
} // lib.optionalAttrs (python.implementation != "graal") { };
# Python Nix environment (python.buildEnv) } // lib.optionalAttrs (python.implementation != "graal") {
nixenv = rec { # Python Nix environment (python.buildEnv)
env = pythonEnv; nixenv = rec {
interpreter = env.interpreter; env = pythonEnv;
is_venv = "False"; interpreter = env.interpreter;
is_nixenv = "True"; is_venv = "False";
is_virtualenv = "False"; is_nixenv = "True";
}; is_virtualenv = "False";
} // lib.optionalAttrs (python.isPy3k && (!python.isPyPy)) rec { };
# Venv built using plain Python } // lib.optionalAttrs (python.isPy3k && (!python.isPyPy)) rec {
# Python 2 does not support venv # Venv built using plain Python
# TODO: PyPy executable name is incorrect, it should be pypy-c or pypy-3c instead of pypy and pypy3. # Python 2 does not support venv
plain-venv = rec { # TODO: PyPy executable name is incorrect, it should be pypy-c or pypy-3c instead of pypy and pypy3.
env = runCommand "${python.name}-venv" {} '' plain-venv = rec {
${python.interpreter} -m venv $out env = runCommand "${python.name}-venv" {} ''
''; ${python.interpreter} -m venv $out
interpreter = "${env}/bin/${python.executable}"; '';
is_venv = "True"; interpreter = "${env}/bin/${python.executable}";
is_nixenv = "False"; is_venv = "True";
is_virtualenv = "False"; is_nixenv = "False";
is_virtualenv = "False";
};
} // lib.optionalAttrs (python.pythonAtLeast "3.8") {
# Venv built using Python Nix environment (python.buildEnv)
# TODO: Cannot create venv from a nix env
# Error: Command '['/nix/store/ddc8nqx73pda86ibvhzdmvdsqmwnbjf7-python3-3.7.6-venv/bin/python3.7', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
nixenv-venv = rec {
env = runCommand "${python.name}-venv" {} ''
${pythonEnv.interpreter} -m venv $out
'';
interpreter = "${env}/bin/${pythonEnv.executable}";
is_venv = "True";
is_nixenv = "True";
is_virtualenv = "False";
};
}; };
} // lib.optionalAttrs (python.pythonAtLeast "3.8") { testfun = name: attrs: runCommand "${python.name}-tests-${name}" ({
# Venv built using Python Nix environment (python.buildEnv) inherit (python) pythonVersion;
# TODO: Cannot create venv from a nix env } // attrs) ''
# Error: Command '['/nix/store/ddc8nqx73pda86ibvhzdmvdsqmwnbjf7-python3-3.7.6-venv/bin/python3.7', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. cp -r ${./tests/test_environments} tests
nixenv-venv = rec { chmod -R +w tests
env = runCommand "${python.name}-venv" {} '' substituteAllInPlace tests/test_python.py
${pythonEnv.interpreter} -m venv $out ${attrs.interpreter} -m unittest discover --verbose tests #/test_python.py
''; mkdir $out
interpreter = "${env}/bin/${pythonEnv.executable}"; touch $out/success
is_venv = "True"; '';
is_nixenv = "True";
is_virtualenv = "False"; in lib.mapAttrs testfun envs;
};
};
# All PyPy package builds are broken at the moment # All PyPy package builds are broken at the moment
integrationTests = lib.optionalAttrs (python.pythonAtLeast "3.7" && (!python.isPyPy)) rec { integrationTests = lib.optionalAttrs (python.pythonAtLeast "3.7" && (!python.isPyPy)) rec {
@@ -76,15 +90,6 @@ let
}; };
}; };
testfun = name: attrs: runCommand "${python.name}-tests-${name}" ({
inherit (python) pythonVersion;
} // attrs) ''
cp -r ${./tests} tests
chmod -R +w tests
substituteAllInPlace tests/test_python.py
${attrs.interpreter} -m unittest discover --verbose tests #/test_python.py
mkdir $out
touch $out/success
'';
in lib.mapAttrs testfun envs // integrationTests
in environmentTests // integrationTests