mirror of
https://github.com/NixOS/nix.git
synced 2025-12-09 10:31:02 +01:00
Merge pull request #14661 from roberth/issue-13994
Document and test -- separator behavior with installables
This commit is contained in:
commit
29849afa63
2 changed files with 44 additions and 0 deletions
|
|
@ -33,6 +33,16 @@ R""(
|
|||
# nix run nixpkgs#vim -- --help
|
||||
```
|
||||
|
||||
* Run the default app from the current directory with arguments:
|
||||
|
||||
```console
|
||||
# nix run . -- arg1 arg2
|
||||
```
|
||||
|
||||
Note: The first positional argument is always treated as the *installable*,
|
||||
even after `--`. To pass arguments to the default installable, specify it
|
||||
explicitly: `nix run . -- arg1 arg2` or `nix run -- . arg1 arg2`.
|
||||
|
||||
# Description
|
||||
|
||||
`nix run` builds and runs [*installable*](./nix.md#installables), which must evaluate to an
|
||||
|
|
|
|||
|
|
@ -55,5 +55,39 @@ echo "_=..." >> "$TEST_ROOT"/actual-env
|
|||
sort "$TEST_ROOT"/actual-env | uniq > "$TEST_ROOT"/actual-env.sorted
|
||||
diff "$TEST_ROOT"/expected-env.sorted "$TEST_ROOT"/actual-env.sorted
|
||||
|
||||
# Test for issue #13994: verify behavior of -- separator with installable
|
||||
# Create a flake with an app that prints its arguments
|
||||
clearStore
|
||||
rm -rf "$TEST_HOME"/.cache "$TEST_HOME"/.config "$TEST_HOME"/.local
|
||||
cd "$TEST_HOME"
|
||||
|
||||
cat <<'EOF' > print-args.sh
|
||||
#!/bin/sh
|
||||
printf "ARGS:"
|
||||
for arg in "$@"; do
|
||||
printf " %s" "$arg"
|
||||
done
|
||||
printf "\n"
|
||||
EOF
|
||||
chmod +x print-args.sh
|
||||
|
||||
cat <<EOF > flake.nix
|
||||
{
|
||||
outputs = {self}: {
|
||||
apps.$system.default = {
|
||||
type = "app";
|
||||
program = "\${self}/print-args.sh";
|
||||
};
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
||||
# Test correct usage: installable before --
|
||||
nix run --no-write-lock-file . -- myarg1 myarg2 2>&1 | grepQuiet "ARGS: myarg1 myarg2"
|
||||
|
||||
# Test that first positional argument is still treated as installable after -- (issue #13994)
|
||||
nix run --no-write-lock-file -- . myarg1 myarg2 2>&1 | grepQuiet "ARGS: myarg1 myarg2"
|
||||
|
||||
# And verify that a non-installable first argument causes an error
|
||||
expectStderr 1 nix run --no-write-lock-file -- myarg1 myarg2 | grepQuiet "error.*myarg1"
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue