aboutsummaryrefslogtreecommitdiff
path: root/tests/functional/symlink-derivation.nix
blob: 17ba3742403438af34c6fe540136b15b68f2f2a9 (plain)
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
with import ./config.nix;

let
  foo_in_store = builtins.toFile "foo" "foo";
  foo_symlink = mkDerivation {
    name = "foo-symlink";
    buildCommand = ''
      ln -s ${foo_in_store} $out
    '';
  };
  symlink_to_not_in_store = mkDerivation {
    name = "symlink-to-not-in-store";
    buildCommand = ''
      ln -s ${builtins.toString ./.} $out
    '';
  };
in
mkDerivation {
  name = "depends-on-symlink";
  buildCommand = ''
    (
      set -x

      # `foo_symlink` should be a symlink pointing to `foo_in_store`
      [[ -L ${foo_symlink} ]]
      [[ $(readlink ${foo_symlink}) == ${foo_in_store} ]]

      # `symlink_to_not_in_store` should be a symlink pointing to `./.`, which
      # is not available in the sandbox
      [[ -L ${symlink_to_not_in_store} ]]
      [[ $(readlink ${symlink_to_not_in_store}) == ${builtins.toString ./.} ]]
      (! ls ${symlink_to_not_in_store}/)
    )
    echo "Success!" > $out
  '';
}