about summary refs log tree commit diff
path: root/nix/utils/tests/default.nix
blob: d8f38fde5cd6b57af9b024472b926c5dbb2ccdfe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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
]