biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / build-support / trivial-builders / test / write-text-file.nix
blob2e6685c1980bf77311500701ff347df78c9cfc8c
1 /*
2   To run:
4       cd nixpkgs
5       nix-build -A tests.trivial-builders.writeTextFile
7   or to run an individual test case
9       cd nixpkgs
10       nix-build -A tests.trivial-builders.writeTextFile.foo
12 { lib, runCommand, runtimeShell, writeTextFile }:
13 let
14   veryWeirdName = ''here's a name with some "bad" characters, like spaces and quotes'';
16 lib.recurseIntoAttrs {
18   different-exe-name =
19     let
20       pkg = writeTextFile {
21         name = "bar";
22         destination = "/bin/foo";
23         executable = true;
24         text = ''
25           #!${runtimeShell}
26           echo hi
27         '';
28       };
29     in
30       assert pkg.meta.mainProgram == "foo";
31       assert baseNameOf (lib.getExe pkg) == "foo";
32       assert pkg.name == "bar";
33       runCommand "test-writeTextFile-different-exe-name" {} ''
34         PATH="${lib.makeBinPath [ pkg ]}:$PATH"
35         x=$(foo)
36         [[ "$x" == hi ]]
37         touch $out
38       '';
40   weird-name = writeTextFile {
41     name = "weird-names";
42     destination = "/etc/${veryWeirdName}";
43     text = ''passed!'';
44     checkPhase = ''
45       # intentionally hardcode everything here, to make sure
46       # Nix does not mess with file paths
48       name="here's a name with some \"bad\" characters, like spaces and quotes"
49       fullPath="$out/etc/$name"
51       if [ -f "$fullPath" ]; then
52         echo "[PASS] File exists!"
53       else
54         echo "[FAIL] File was not created at expected path!"
55         exit 1
56       fi
58       content=$(<"$fullPath")
59       expected="passed!"
61       if [ "$content" = "$expected" ]; then
62         echo "[PASS] Contents match!"
63       else
64         echo "[FAIL] File contents don't match!"
65         echo "       Expected: $expected"
66         echo "       Got:      $content"
67         exit 2
68       fi
69     '';
70   };