tests.trivial-builders.writeTextFile: Test meta.mainProgram logic
This commit is contained in:
parent
a6aabd9d28
commit
0dd3989cef
@ -1,34 +1,71 @@
|
||||
{ writeTextFile }:
|
||||
/*
|
||||
To run:
|
||||
|
||||
cd nixpkgs
|
||||
nix-build -A tests.trivial-builders.writeTextFile
|
||||
|
||||
or to run an individual test case
|
||||
|
||||
cd nixpkgs
|
||||
nix-build -A tests.trivial-builders.writeTextFile.foo
|
||||
*/
|
||||
{ lib, runCommand, runtimeShell, writeTextFile }:
|
||||
let
|
||||
veryWeirdName = ''here's a name with some "bad" characters, like spaces and quotes'';
|
||||
in writeTextFile {
|
||||
name = "weird-names";
|
||||
destination = "/etc/${veryWeirdName}";
|
||||
text = ''passed!'';
|
||||
checkPhase = ''
|
||||
# intentionally hardcode everything here, to make sure
|
||||
# Nix does not mess with file paths
|
||||
in
|
||||
lib.recurseIntoAttrs {
|
||||
|
||||
name="here's a name with some \"bad\" characters, like spaces and quotes"
|
||||
fullPath="$out/etc/$name"
|
||||
different-exe-name =
|
||||
let
|
||||
pkg = writeTextFile {
|
||||
name = "bar";
|
||||
destination = "/bin/foo";
|
||||
executable = true;
|
||||
text = ''
|
||||
#!${runtimeShell}
|
||||
echo hi
|
||||
'';
|
||||
};
|
||||
in
|
||||
assert pkg.meta.mainProgram == "foo";
|
||||
assert baseNameOf (lib.getExe pkg) == "foo";
|
||||
assert pkg.name == "bar";
|
||||
runCommand "test-writeTextFile-different-exe-name" {} ''
|
||||
PATH="${lib.makeBinPath [ pkg ]}:$PATH"
|
||||
x=$(foo)
|
||||
[[ "$x" == hi ]]
|
||||
touch $out
|
||||
'';
|
||||
|
||||
if [ -f "$fullPath" ]; then
|
||||
echo "[PASS] File exists!"
|
||||
else
|
||||
echo "[FAIL] File was not created at expected path!"
|
||||
exit 1
|
||||
fi
|
||||
weird-name = writeTextFile {
|
||||
name = "weird-names";
|
||||
destination = "/etc/${veryWeirdName}";
|
||||
text = ''passed!'';
|
||||
checkPhase = ''
|
||||
# intentionally hardcode everything here, to make sure
|
||||
# Nix does not mess with file paths
|
||||
|
||||
content=$(<"$fullPath")
|
||||
expected="passed!"
|
||||
name="here's a name with some \"bad\" characters, like spaces and quotes"
|
||||
fullPath="$out/etc/$name"
|
||||
|
||||
if [ "$content" = "$expected" ]; then
|
||||
echo "[PASS] Contents match!"
|
||||
else
|
||||
echo "[FAIL] File contents don't match!"
|
||||
echo " Expected: $expected"
|
||||
echo " Got: $content"
|
||||
exit 2
|
||||
fi
|
||||
'';
|
||||
if [ -f "$fullPath" ]; then
|
||||
echo "[PASS] File exists!"
|
||||
else
|
||||
echo "[FAIL] File was not created at expected path!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
content=$(<"$fullPath")
|
||||
expected="passed!"
|
||||
|
||||
if [ "$content" = "$expected" ]; then
|
||||
echo "[PASS] Contents match!"
|
||||
else
|
||||
echo "[FAIL] File contents don't match!"
|
||||
echo " Expected: $expected"
|
||||
echo " Got: $content"
|
||||
exit 2
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user