diff options
author | Silvan Mosberger <silvan.mosberger@tweag.io> | 2023-12-11 23:05:51 +0100 |
---|---|---|
committer | Silvan Mosberger <silvan.mosberger@tweag.io> | 2023-12-11 23:05:51 +0100 |
commit | 6e3be6ddb0c9789d8b891318c526a9401dab481e (patch) | |
tree | d7e52f6b8b5e0167188730c7cfecd2bf99a01ab6 /lib/fileset | |
parent | eec765f9e6a862c82990df8d3ceedf51f4600330 (diff) |
lib.fileset.gitTracked: Improve error when passing files
Diffstat (limited to 'lib/fileset')
-rw-r--r-- | lib/fileset/internal.nix | 2 | ||||
-rwxr-xr-x | lib/fileset/tests.sh | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/fileset/internal.nix b/lib/fileset/internal.nix index ade21fd87610..9de5590d3eff 100644 --- a/lib/fileset/internal.nix +++ b/lib/fileset/internal.nix @@ -874,6 +874,8 @@ rec { throw "lib.fileset.${function}: This function is currently not supported in pure evaluation mode, since it currently relies on `builtins.fetchGit`. See https://github.com/NixOS/nix/issues/9292." else if ! isPath path then throw "lib.fileset.${function}: Expected the ${argument} to be a path, but it's a ${typeOf path} instead." + else if pathType path != "directory" then + throw "lib.fileset.${function}: Expected the ${argument} (${toString path}) to be a directory, but it's a file instead." # We can identify local working directories by checking for .git, # see https://git-scm.com/docs/gitrepository-layout#_description. # Note that `builtins.fetchGit` _does_ work for bare repositories (where there's no `.git`), diff --git a/lib/fileset/tests.sh b/lib/fileset/tests.sh index 077aefe371c3..d55c4fbfdbeb 100755 --- a/lib/fileset/tests.sh +++ b/lib/fileset/tests.sh @@ -1317,6 +1317,12 @@ rm -rf -- * expectFailure 'gitTracked null' 'lib.fileset.gitTracked: Expected the argument to be a path, but it'\''s a null instead.' expectFailure 'gitTrackedWith {} null' 'lib.fileset.gitTrackedWith: Expected the second argument to be a path, but it'\''s a null instead.' +# The path must be a directory +touch a +expectFailure 'gitTracked ./a' 'lib.fileset.gitTracked: Expected the argument \('"$work"'/a\) to be a directory, but it'\''s a file instead' +expectFailure 'gitTrackedWith {} ./a' 'lib.fileset.gitTrackedWith: Expected the second argument \('"$work"'/a\) to be a directory, but it'\''s a file instead' +rm -rf -- * + # The path has to contain a .git directory expectFailure 'gitTracked ./.' 'lib.fileset.gitTracked: Expected the argument \('"$work"'\) to point to a local working tree of a Git repository, but it'\''s not.' expectFailure 'gitTrackedWith {} ./.' 'lib.fileset.gitTrackedWith: Expected the second argument \('"$work"'\) to point to a local working tree of a Git repository, but it'\''s not.' |