test(nix/utils): unit test path predicates

Change-Id: I85f38ef8f284c4accd1ea744f61358622785358d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3534
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This commit is contained in:
sterni 2021-09-11 18:44:09 +02:00
parent 987b9b551c
commit 4ebab80b5a
8 changed files with 69 additions and 0 deletions

View file

@ -0,0 +1 @@
subdirectories are just test cases

View file

@ -0,0 +1,63 @@
{ depot, lib, ... }:
let
inherit (depot.nix.runTestsuite)
runTestsuite
it
assertEq
assertThrows
assertDoesNotThrow
;
inherit (depot.nix.utils)
isDirectory
isRegularFile
isSymlink
;
assertUtilsPred = msg: act: exp: [
(assertDoesNotThrow "${msg} does not throw" act)
(assertEq msg (builtins.tryEval act).value exp)
];
pathPredicates = it "judges paths correctly" (lib.flatten [
# isDirectory
(assertUtilsPred "directory isDirectory"
(isDirectory ./directory) true)
(assertUtilsPred "symlink not isDirectory"
(isDirectory ./symlink-directory) false)
(assertUtilsPred "file not isDirectory"
(isDirectory ./directory/file) false)
# isRegularFile
(assertUtilsPred "file isRegularFile"
(isRegularFile ./directory/file) true)
(assertUtilsPred "symlink not isRegularFile"
(isRegularFile ./symlink-file) false)
(assertUtilsPred "directory not isRegularFile"
(isRegularFile ./directory) false)
# isSymlink
(assertUtilsPred "symlink to file isSymlink"
(isSymlink ./symlink-file) true)
(assertUtilsPred "symlink to directory isSymlink"
(isSymlink ./symlink-directory) true)
(assertUtilsPred "symlink to symlink isSymlink"
(isSymlink ./symlink-symlink-file) true)
(assertUtilsPred "symlink to missing file isSymlink"
(isSymlink ./missing) true)
(assertUtilsPred "directory not isSymlink"
(isSymlink ./directory) false)
(assertUtilsPred "file not isSymlink"
(isSymlink ./directory/file) false)
# missing files throw
(assertThrows "isDirectory throws on missing file"
(isDirectory ./does-not-exist))
(assertThrows "isRegularFile throws on missing file"
(isRegularFile ./does-not-exist))
(assertThrows "isSymlink throws on missing file"
(isSymlink ./does-not-exist))
]);
in
runTestsuite "nix.utils" [
pathPredicates
]

View file

1
nix/utils/tests/missing Symbolic link
View file

@ -0,0 +1 @@
does-not-exist

View file

@ -0,0 +1 @@
directory

View file

@ -0,0 +1 @@
directory/file

View file

@ -0,0 +1 @@
symlink-directory

View file

@ -0,0 +1 @@
symlink-file