about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/interpreters/python/tests.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-04-01 15:50:50 +0000
committerAlyssa Ross <hi@alyssa.is>2020-04-01 15:50:50 +0000
commit75eafe97f7df0d653bec67f3962214d7c357831f (patch)
tree09f2cc901e0e637876cbb78d192dfe2fcfef8156 /nixpkgs/pkgs/development/interpreters/python/tests.nix
parenta53b121bf4331497da63df3b1b7f1a7897dad146 (diff)
parenta2e06fc3423c4be53181b15c28dfbe0bcf67dd73 (diff)
downloadnixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.gz
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.bz2
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.lz
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.xz
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.zst
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.zip
Merge commit 'a2e06fc3423c4be53181b15c28dfbe0bcf67dd73'
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters/python/tests.nix')
-rw-r--r--nixpkgs/pkgs/development/interpreters/python/tests.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/python/tests.nix b/nixpkgs/pkgs/development/interpreters/python/tests.nix
new file mode 100644
index 000000000000..37fbe6701148
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/python/tests.nix
@@ -0,0 +1,63 @@
+{ python
+, runCommand
+, substituteAll
+, lib
+}:
+
+let
+  envs = let
+    inherit python;
+    pythonEnv = python.withPackages(ps: with ps; [ ]);
+  in {
+    # Plain Python interpreter
+    plain = rec {
+      env = python;
+      interpreter = env.interpreter;
+      is_venv = "False";
+      is_nixenv = "False";
+    };
+  } // lib.optionalAttrs (python.implementation != "graal") {
+    # Python Nix environment (python.buildEnv)
+    nixenv = rec {
+      env = pythonEnv;
+      interpreter = env.interpreter;
+      is_venv = "False";
+      is_nixenv = "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";
+    };
+    # 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";
+    # };
+  };
+
+  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 
\ No newline at end of file