From 0db25e4de9c105db95a79600e0928089a089aa9b Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Tue, 6 Dec 2022 15:05:52 -0500 Subject: [PATCH 1/3] Don't track $nixfile if it is empty --- direnvrc | 7 ++++--- tests/test_use_nix.py | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/direnvrc b/direnvrc index 4b81a49..3acb8f7 100644 --- a/direnvrc +++ b/direnvrc @@ -336,9 +336,10 @@ use_nix() { esac done - # nixfile may be empty, - # but nix_direnv_watch_file checks for existence before adding to watches - nix_direnv_watch_file "$HOME/.direnvrc" "$HOME/.config/direnv/direnvrc" .envrc "$nixfile" + nix_direnv_watch_file "$HOME/.direnvrc" "$HOME/.config/direnv/direnvrc" ".envrc" + if [ -e "$nixfile" ]; then + nix_direnv_watch_file "$nixfile" + fi local need_update=0 local file= diff --git a/tests/test_use_nix.py b/tests/test_use_nix.py index 98cb351..3422f9a 100644 --- a/tests/test_use_nix.py +++ b/tests/test_use_nix.py @@ -33,5 +33,10 @@ def test_args(direnv_project: DirenvProject) -> None: direnv_exec(direnv_project, "echo $SHOULD_BE_SET") +def test_no_files(direnv_project: DirenvProject) -> None: + direnv_project.setup_envrc("use nix -p hello") + direnv_exec(direnv_project, "hello") + + if __name__ == "__main__": unittest.main() From 7af01eeb72e3204e7063cd0afcf3f63cd333a9bd Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Wed, 7 Dec 2022 08:04:17 -0500 Subject: [PATCH 2/3] Check if "$nixfile" is a file before watching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jörg Thalheim --- direnvrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/direnvrc b/direnvrc index 3acb8f7..d3dd839 100644 --- a/direnvrc +++ b/direnvrc @@ -337,7 +337,7 @@ use_nix() { done nix_direnv_watch_file "$HOME/.direnvrc" "$HOME/.config/direnv/direnvrc" ".envrc" - if [ -e "$nixfile" ]; then + if [ -f "$nixfile" ]; then nix_direnv_watch_file "$nixfile" fi From 77efe5abca6fd8a59c3d9fc651c6e567bd9831fe Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Fri, 9 Dec 2022 20:14:58 -0500 Subject: [PATCH 3/3] Fix tests for empty nixfile --- tests/direnv_project.py | 12 +++++++----- tests/test_use_nix.py | 10 +++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/tests/direnv_project.py b/tests/direnv_project.py index b2b5333..17c4c50 100644 --- a/tests/direnv_project.py +++ b/tests/direnv_project.py @@ -1,10 +1,11 @@ #!/usr/bin/env python3 -from dataclasses import dataclass import shutil +import textwrap +from dataclasses import dataclass +from pathlib import Path from tempfile import TemporaryDirectory from typing import Iterator -from pathlib import Path import pytest @@ -21,12 +22,13 @@ class DirenvProject: return self.dir / ".envrc" def setup_envrc(self, content: str) -> None: - self.envrc.write_text( + text = textwrap.dedent( f""" -source {self.nix_direnv} -{content} + source {self.nix_direnv} + {content} """ ) + self.envrc.write_text(text) run(["direnv", "allow"], cwd=self.dir) diff --git a/tests/test_use_nix.py b/tests/test_use_nix.py index 3422f9a..c9495f8 100644 --- a/tests/test_use_nix.py +++ b/tests/test_use_nix.py @@ -35,7 +35,15 @@ def test_args(direnv_project: DirenvProject) -> None: def test_no_files(direnv_project: DirenvProject) -> None: direnv_project.setup_envrc("use nix -p hello") - direnv_exec(direnv_project, "hello") + out = run( + ["direnv", "status"], + stderr=subprocess.PIPE, + stdout=subprocess.PIPE, + check=False, + cwd=direnv_project.dir, + ) + assert out.returncode == 0 + assert 'Loaded watch: "."' not in out.stdout if __name__ == "__main__":