mirror of
https://github.com/nix-community/nix-direnv.git
synced 2025-11-08 11:36:11 +01:00
rewrite tests using pytest
this allows us to use fixtures that are more flexible
This commit is contained in:
parent
6dbc942fea
commit
748988f4b9
10 changed files with 195 additions and 113 deletions
60
tests/test_gc.py
Normal file
60
tests/test_gc.py
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env python2
|
||||
|
||||
import sys
|
||||
import subprocess
|
||||
import unittest
|
||||
|
||||
from procs import run
|
||||
from direnv_project import DirenvProject
|
||||
|
||||
|
||||
def common_test(direnv_project: DirenvProject) -> None:
|
||||
run(["nix-collect-garbage"])
|
||||
|
||||
testenv = str(direnv_project.dir)
|
||||
|
||||
out1 = run(
|
||||
["direnv", "exec", testenv, "hello"],
|
||||
stderr=subprocess.PIPE,
|
||||
check=False,
|
||||
cwd=direnv_project.dir,
|
||||
)
|
||||
sys.stderr.write(out1.stderr)
|
||||
assert out1.returncode == 0
|
||||
assert "renewed cache" in out1.stderr
|
||||
assert "Executing shellHook." in out1.stderr
|
||||
|
||||
run(["nix-collect-garbage"])
|
||||
|
||||
out2 = run(
|
||||
["direnv", "exec", testenv, "hello"],
|
||||
stderr=subprocess.PIPE,
|
||||
check=False,
|
||||
cwd=direnv_project.dir,
|
||||
)
|
||||
sys.stderr.write(out2.stderr)
|
||||
assert out1.returncode == 0
|
||||
assert "using cached dev shell" in out2.stderr
|
||||
assert "Executing shellHook." in out2.stderr
|
||||
|
||||
|
||||
def test_use_nix(direnv_project: DirenvProject) -> None:
|
||||
direnv_project.setup_envrc("use nix")
|
||||
common_test(direnv_project)
|
||||
|
||||
|
||||
def test_use_flake(direnv_project: DirenvProject) -> None:
|
||||
direnv_project.setup_envrc("use flake")
|
||||
common_test(direnv_project)
|
||||
inputs = list((direnv_project.dir / ".direnv/flake-inputs").iterdir())
|
||||
# should only contain our flake-utils flake
|
||||
if len(inputs) != 3:
|
||||
run(["nix", "flake", "archive", "--json"], cwd=direnv_project.dir)
|
||||
print(inputs)
|
||||
assert len(inputs) == 3
|
||||
for symlink in inputs:
|
||||
assert symlink.is_dir()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue