diff options
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters/python/tests.nix')
-rw-r--r-- | nixpkgs/pkgs/development/interpreters/python/tests.nix | 147 |
1 files changed, 75 insertions, 72 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/python/tests.nix b/nixpkgs/pkgs/development/interpreters/python/tests.nix index 6c4a6ae8e21..dcfa41cc308 100644 --- a/nixpkgs/pkgs/development/interpreters/python/tests.nix +++ b/nixpkgs/pkgs/development/interpreters/python/tests.nix @@ -6,69 +6,81 @@ }: let - envs = let - inherit python; - pythonEnv = python.withPackages(ps: with ps; [ ]); - pythonVirtualEnv = python.withPackages(ps: with ps; [ virtualenv ]); - in { - # Plain Python interpreter - plain = rec { - env = python; - interpreter = env.interpreter; - is_venv = "False"; - is_nixenv = "False"; - is_virtualenv = "False"; - }; - } // lib.optionalAttrs (python.isPy3k && !python.isPyPy) { - # Use virtualenv from a Nix env. - # Does not function with Python 2 - # ValueError: source and destination is the same /nix/store/38kz3j1a87cq5y59k5w7k9yk4cqgc5b2-python-2.7.18/lib/python2.7/os.py - nixenv-virtualenv = rec { - env = runCommand "${python.name}-virtualenv" {} '' - ${pythonVirtualEnv.interpreter} -m virtualenv $out - ''; - interpreter = "${env}/bin/${python.executable}"; - is_venv = "False"; - is_nixenv = "True"; - is_virtualenv = "True"; - }; - } // lib.optionalAttrs (python.implementation != "graal") { - # Python Nix environment (python.buildEnv) - nixenv = rec { - env = pythonEnv; - interpreter = env.interpreter; - is_venv = "False"; - is_nixenv = "True"; - is_virtualenv = "True"; - }; - } // lib.optionalAttrs (python.isPy3k && (!python.isPyPy)) rec { - # Venv built using plain Python - # Python 2 does not support venv - # TODO: PyPy executable name is incorrect, it should be pypy-c or pypy-3c instead of pypy and pypy3. - plain-venv = rec { - env = runCommand "${python.name}-venv" {} '' - ${python.interpreter} -m venv $out - ''; - interpreter = "${env}/bin/${python.executable}"; - is_venv = "True"; - is_nixenv = "False"; - is_virtualenv = "True"; - }; + environmentTests = let + envs = let + inherit python; + pythonEnv = python.withPackages(ps: with ps; [ ]); + pythonVirtualEnv = python.withPackages(ps: with ps; [ virtualenv ]); + in { + # Plain Python interpreter + plain = rec { + env = python; + interpreter = env.interpreter; + is_venv = "False"; + is_nixenv = "False"; + is_virtualenv = "False"; + }; + } // lib.optionalAttrs (!python.isPyPy) { + # Use virtualenv from a Nix env. + nixenv-virtualenv = rec { + env = runCommand "${python.name}-virtualenv" {} '' + ${pythonVirtualEnv.interpreter} -m virtualenv $out + ''; + interpreter = "${env}/bin/${python.executable}"; + is_venv = "False"; + is_nixenv = "True"; + is_virtualenv = "True"; + }; + } // lib.optionalAttrs (python.implementation != "graal") { + # Python Nix environment (python.buildEnv) + nixenv = rec { + env = pythonEnv; + interpreter = env.interpreter; + is_venv = "False"; + is_nixenv = "True"; + is_virtualenv = "False"; + }; + } // lib.optionalAttrs (python.isPy3k && (!python.isPyPy)) rec { + # Venv built using plain Python + # Python 2 does not support venv + # TODO: PyPy executable name is incorrect, it should be pypy-c or pypy-3c instead of pypy and pypy3. + plain-venv = rec { + env = runCommand "${python.name}-venv" {} '' + ${python.interpreter} -m venv $out + ''; + interpreter = "${env}/bin/${python.executable}"; + is_venv = "True"; + 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 = "True"; + } // 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"; + }; }; - }; + + testfun = name: attrs: runCommand "${python.name}-tests-${name}" ({ + inherit (python) pythonVersion; + } // attrs) '' + cp -r ${./tests/test_environments} 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; # All PyPy package builds are broken at the moment integrationTests = lib.optionalAttrs (python.pythonAtLeast "3.7" && (!python.isPyPy)) rec { @@ -78,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 |