diff --git a/tests/test_use_nix.py b/tests/test_use_nix.py new file mode 100644 index 0000000..98cb351 --- /dev/null +++ b/tests/test_use_nix.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python2 + +import sys +import subprocess +import unittest + +from procs import run +from direnv_project import DirenvProject + + +def direnv_exec(direnv_project: DirenvProject, cmd: str) -> None: + out = run( + ["direnv", "exec", str(direnv_project.dir), "sh", "-c", cmd], + stderr=subprocess.PIPE, + stdout=subprocess.PIPE, + check=False, + cwd=direnv_project.dir, + ) + sys.stdout.write(out.stdout) + sys.stderr.write(out.stderr) + assert out.returncode == 0 + assert "OK\n" == out.stdout + assert "renewed cache" in out.stderr + + +def test_attrs(direnv_project: DirenvProject) -> None: + direnv_project.setup_envrc("use nix -A subshell") + direnv_exec(direnv_project, "echo $THIS_IS_A_SUBSHELL") + + +def test_args(direnv_project: DirenvProject) -> None: + direnv_project.setup_envrc("use nix --argstr someArg OK") + direnv_exec(direnv_project, "echo $SHOULD_BE_SET") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/testenv/shell.nix b/tests/testenv/shell.nix index 55be618..c5c9d85 100644 --- a/tests/testenv/shell.nix +++ b/tests/testenv/shell.nix @@ -1,7 +1,14 @@ -{ pkgs ? import {} }: +{ pkgs ? import {}, someArg ? null }: pkgs.mkShellNoCC { nativeBuildInputs = [ pkgs.hello ]; shellHook = '' echo "Executing shellHook." ''; + SHOULD_BE_SET = someArg; + + passthru = { + subshell = pkgs.mkShellNoCC { + THIS_IS_A_SUBSHELL = "OK"; + }; + }; }