mirror of
https://github.com/NixOS/nix.git
synced 2024-11-25 00:02:25 +00:00
Move shebang flake tests into a separate test
This commit is contained in:
parent
c13c6066b7
commit
5533b0c735
@ -74,100 +74,9 @@ cat > "$nonFlakeDir/README.md" <<EOF
|
|||||||
FNORD
|
FNORD
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat > "$nonFlakeDir/shebang.sh" <<EOF
|
git -C "$nonFlakeDir" add README.md
|
||||||
#! $(type -P env) nix
|
|
||||||
#! nix --offline shell
|
|
||||||
#! nix flake1#fooScript
|
|
||||||
#! nix --no-write-lock-file --command bash
|
|
||||||
set -ex
|
|
||||||
foo
|
|
||||||
echo "\$@"
|
|
||||||
EOF
|
|
||||||
chmod +x "$nonFlakeDir/shebang.sh"
|
|
||||||
|
|
||||||
git -C "$nonFlakeDir" add README.md shebang.sh
|
|
||||||
git -C "$nonFlakeDir" commit -m 'Initial'
|
git -C "$nonFlakeDir" commit -m 'Initial'
|
||||||
|
|
||||||
# this also tests a fairly trivial double backtick quoted string, ``--command``
|
|
||||||
cat > $nonFlakeDir/shebang-comments.sh <<EOF
|
|
||||||
#! $(type -P env) nix
|
|
||||||
# some comments
|
|
||||||
# some comments
|
|
||||||
# some comments
|
|
||||||
#! nix --offline shell
|
|
||||||
#! nix flake1#fooScript
|
|
||||||
#! nix --no-write-lock-file ``--command`` bash
|
|
||||||
foo
|
|
||||||
EOF
|
|
||||||
chmod +x $nonFlakeDir/shebang-comments.sh
|
|
||||||
|
|
||||||
cat > $nonFlakeDir/shebang-different-comments.sh <<EOF
|
|
||||||
#! $(type -P env) nix
|
|
||||||
# some comments
|
|
||||||
// some comments
|
|
||||||
/* some comments
|
|
||||||
* some comments
|
|
||||||
\ some comments
|
|
||||||
% some comments
|
|
||||||
@ some comments
|
|
||||||
-- some comments
|
|
||||||
(* some comments
|
|
||||||
#! nix --offline shell
|
|
||||||
#! nix flake1#fooScript
|
|
||||||
#! nix --no-write-lock-file --command cat
|
|
||||||
foo
|
|
||||||
EOF
|
|
||||||
chmod +x $nonFlakeDir/shebang-different-comments.sh
|
|
||||||
|
|
||||||
cat > $nonFlakeDir/shebang-reject.sh <<EOF
|
|
||||||
#! $(type -P env) nix
|
|
||||||
# some comments
|
|
||||||
# some comments
|
|
||||||
# some comments
|
|
||||||
#! nix --offline shell *
|
|
||||||
#! nix flake1#fooScript
|
|
||||||
#! nix --no-write-lock-file --command bash
|
|
||||||
foo
|
|
||||||
EOF
|
|
||||||
chmod +x $nonFlakeDir/shebang-reject.sh
|
|
||||||
|
|
||||||
cat > $nonFlakeDir/shebang-inline-expr.sh <<EOF
|
|
||||||
#! $(type -P env) nix
|
|
||||||
EOF
|
|
||||||
cat >> $nonFlakeDir/shebang-inline-expr.sh <<"EOF"
|
|
||||||
#! nix --offline shell
|
|
||||||
#! nix --impure --expr ``
|
|
||||||
#! nix let flake = (builtins.getFlake (toString ../flake1)).packages;
|
|
||||||
#! nix fooScript = flake.${builtins.currentSystem}.fooScript;
|
|
||||||
#! nix /* just a comment !@#$%^&*()__+ # */
|
|
||||||
#! nix in fooScript
|
|
||||||
#! nix ``
|
|
||||||
#! nix --no-write-lock-file --command bash
|
|
||||||
set -ex
|
|
||||||
foo
|
|
||||||
echo "$@"
|
|
||||||
EOF
|
|
||||||
chmod +x $nonFlakeDir/shebang-inline-expr.sh
|
|
||||||
|
|
||||||
cat > $nonFlakeDir/fooScript.nix <<"EOF"
|
|
||||||
let flake = (builtins.getFlake (toString ../flake1)).packages;
|
|
||||||
fooScript = flake.${builtins.currentSystem}.fooScript;
|
|
||||||
in fooScript
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat > $nonFlakeDir/shebang-file.sh <<EOF
|
|
||||||
#! $(type -P env) nix
|
|
||||||
EOF
|
|
||||||
cat >> $nonFlakeDir/shebang-file.sh <<"EOF"
|
|
||||||
#! nix --offline shell
|
|
||||||
#! nix --impure --file ./fooScript.nix
|
|
||||||
#! nix --no-write-lock-file --command bash
|
|
||||||
set -ex
|
|
||||||
foo
|
|
||||||
echo "$@"
|
|
||||||
EOF
|
|
||||||
chmod +x $nonFlakeDir/shebang-file.sh
|
|
||||||
|
|
||||||
# Construct a custom registry, additionally test the --registry flag
|
# Construct a custom registry, additionally test the --registry flag
|
||||||
nix registry add --registry "$registry" flake1 "git+file://$flake1Dir"
|
nix registry add --registry "$registry" flake1 "git+file://$flake1Dir"
|
||||||
nix registry add --registry "$registry" flake2 "git+file://$percentEncodedFlake2Dir"
|
nix registry add --registry "$registry" flake2 "git+file://$percentEncodedFlake2Dir"
|
||||||
@ -644,15 +553,6 @@ nix flake metadata "$flake2Dir" --reference-lock-file $TEST_ROOT/flake2-overridd
|
|||||||
# reference-lock-file can only be used if allow-dirty is set.
|
# reference-lock-file can only be used if allow-dirty is set.
|
||||||
expectStderr 1 nix flake metadata "$flake2Dir" --no-allow-dirty --reference-lock-file $TEST_ROOT/flake2-overridden.lock
|
expectStderr 1 nix flake metadata "$flake2Dir" --no-allow-dirty --reference-lock-file $TEST_ROOT/flake2-overridden.lock
|
||||||
|
|
||||||
# Test shebang
|
|
||||||
[[ $($nonFlakeDir/shebang.sh) = "foo" ]]
|
|
||||||
[[ $($nonFlakeDir/shebang.sh "bar") = "foo"$'\n'"bar" ]]
|
|
||||||
[[ $($nonFlakeDir/shebang-comments.sh ) = "foo" ]]
|
|
||||||
[[ "$($nonFlakeDir/shebang-different-comments.sh)" = "$(cat $nonFlakeDir/shebang-different-comments.sh)" ]]
|
|
||||||
[[ $($nonFlakeDir/shebang-inline-expr.sh baz) = "foo"$'\n'"baz" ]]
|
|
||||||
[[ $($nonFlakeDir/shebang-file.sh baz) = "foo"$'\n'"baz" ]]
|
|
||||||
expect 1 $nonFlakeDir/shebang-reject.sh 2>&1 | grepQuiet -F 'error: unsupported unquoted character in nix shebang: *. Use double backticks to escape?'
|
|
||||||
|
|
||||||
# Test that the --commit-lock-file-summary flag and its alias work
|
# Test that the --commit-lock-file-summary flag and its alias work
|
||||||
cat > "$lockfileSummaryFlake/flake.nix" <<EOF
|
cat > "$lockfileSummaryFlake/flake.nix" <<EOF
|
||||||
{
|
{
|
||||||
|
@ -24,6 +24,7 @@ suites += {
|
|||||||
'config.sh',
|
'config.sh',
|
||||||
'show.sh',
|
'show.sh',
|
||||||
'dubious-query.sh',
|
'dubious-query.sh',
|
||||||
|
'shebang.sh',
|
||||||
],
|
],
|
||||||
'workdir': meson.current_source_dir(),
|
'workdir': meson.current_source_dir(),
|
||||||
}
|
}
|
||||||
|
117
tests/functional/flakes/shebang.sh
Normal file
117
tests/functional/flakes/shebang.sh
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
source ./common.sh
|
||||||
|
|
||||||
|
TODO_NixOS
|
||||||
|
|
||||||
|
requireGit
|
||||||
|
|
||||||
|
flake1Dir=$TEST_ROOT/flake1
|
||||||
|
nonFlakeDir=$TEST_ROOT/nonFlake
|
||||||
|
|
||||||
|
createGitRepo "$flake1Dir" ""
|
||||||
|
createSimpleGitFlake "$flake1Dir"
|
||||||
|
nix registry add --registry "$registry" flake1 "git+file://$flake1Dir"
|
||||||
|
|
||||||
|
mkdir -p "$nonFlakeDir"
|
||||||
|
|
||||||
|
cat > "$nonFlakeDir/shebang.sh" <<EOF
|
||||||
|
#! $(type -P env) nix
|
||||||
|
#! nix --offline shell
|
||||||
|
#! nix flake1#fooScript
|
||||||
|
#! nix --no-write-lock-file --command bash
|
||||||
|
set -ex
|
||||||
|
foo
|
||||||
|
echo "\$@"
|
||||||
|
EOF
|
||||||
|
chmod +x "$nonFlakeDir/shebang.sh"
|
||||||
|
|
||||||
|
#git -C "$nonFlakeDir" add shebang.sh
|
||||||
|
|
||||||
|
# this also tests a fairly trivial double backtick quoted string, ``--command``
|
||||||
|
cat > $nonFlakeDir/shebang-comments.sh <<EOF
|
||||||
|
#! $(type -P env) nix
|
||||||
|
# some comments
|
||||||
|
# some comments
|
||||||
|
# some comments
|
||||||
|
#! nix --offline shell
|
||||||
|
#! nix flake1#fooScript
|
||||||
|
#! nix --no-write-lock-file ``--command`` bash
|
||||||
|
foo
|
||||||
|
EOF
|
||||||
|
chmod +x $nonFlakeDir/shebang-comments.sh
|
||||||
|
|
||||||
|
cat > $nonFlakeDir/shebang-different-comments.sh <<EOF
|
||||||
|
#! $(type -P env) nix
|
||||||
|
# some comments
|
||||||
|
// some comments
|
||||||
|
/* some comments
|
||||||
|
* some comments
|
||||||
|
\ some comments
|
||||||
|
% some comments
|
||||||
|
@ some comments
|
||||||
|
-- some comments
|
||||||
|
(* some comments
|
||||||
|
#! nix --offline shell
|
||||||
|
#! nix flake1#fooScript
|
||||||
|
#! nix --no-write-lock-file --command cat
|
||||||
|
foo
|
||||||
|
EOF
|
||||||
|
chmod +x $nonFlakeDir/shebang-different-comments.sh
|
||||||
|
|
||||||
|
cat > $nonFlakeDir/shebang-reject.sh <<EOF
|
||||||
|
#! $(type -P env) nix
|
||||||
|
# some comments
|
||||||
|
# some comments
|
||||||
|
# some comments
|
||||||
|
#! nix --offline shell *
|
||||||
|
#! nix flake1#fooScript
|
||||||
|
#! nix --no-write-lock-file --command bash
|
||||||
|
foo
|
||||||
|
EOF
|
||||||
|
chmod +x $nonFlakeDir/shebang-reject.sh
|
||||||
|
|
||||||
|
cat > $nonFlakeDir/shebang-inline-expr.sh <<EOF
|
||||||
|
#! $(type -P env) nix
|
||||||
|
EOF
|
||||||
|
cat >> $nonFlakeDir/shebang-inline-expr.sh <<"EOF"
|
||||||
|
#! nix --offline shell
|
||||||
|
#! nix --impure --expr ``
|
||||||
|
#! nix let flake = (builtins.getFlake (toString ../flake1)).packages;
|
||||||
|
#! nix fooScript = flake.${builtins.currentSystem}.fooScript;
|
||||||
|
#! nix /* just a comment !@#$%^&*()__+ # */
|
||||||
|
#! nix in fooScript
|
||||||
|
#! nix ``
|
||||||
|
#! nix --no-write-lock-file --command bash
|
||||||
|
set -ex
|
||||||
|
foo
|
||||||
|
echo "$@"
|
||||||
|
EOF
|
||||||
|
chmod +x $nonFlakeDir/shebang-inline-expr.sh
|
||||||
|
|
||||||
|
cat > $nonFlakeDir/fooScript.nix <<"EOF"
|
||||||
|
let flake = (builtins.getFlake (toString ../flake1)).packages;
|
||||||
|
fooScript = flake.${builtins.currentSystem}.fooScript;
|
||||||
|
in fooScript
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > $nonFlakeDir/shebang-file.sh <<EOF
|
||||||
|
#! $(type -P env) nix
|
||||||
|
EOF
|
||||||
|
cat >> $nonFlakeDir/shebang-file.sh <<"EOF"
|
||||||
|
#! nix --offline shell
|
||||||
|
#! nix --impure --file ./fooScript.nix
|
||||||
|
#! nix --no-write-lock-file --command bash
|
||||||
|
set -ex
|
||||||
|
foo
|
||||||
|
echo "$@"
|
||||||
|
EOF
|
||||||
|
chmod +x $nonFlakeDir/shebang-file.sh
|
||||||
|
|
||||||
|
[[ $($nonFlakeDir/shebang.sh) = "foo" ]]
|
||||||
|
[[ $($nonFlakeDir/shebang.sh "bar") = "foo"$'\n'"bar" ]]
|
||||||
|
[[ $($nonFlakeDir/shebang-comments.sh ) = "foo" ]]
|
||||||
|
[[ "$($nonFlakeDir/shebang-different-comments.sh)" = "$(cat $nonFlakeDir/shebang-different-comments.sh)" ]]
|
||||||
|
[[ $($nonFlakeDir/shebang-inline-expr.sh baz) = "foo"$'\n'"baz" ]]
|
||||||
|
[[ $($nonFlakeDir/shebang-file.sh baz) = "foo"$'\n'"baz" ]]
|
||||||
|
expect 1 $nonFlakeDir/shebang-reject.sh 2>&1 | grepQuiet -F 'error: unsupported unquoted character in nix shebang: *. Use double backticks to escape?'
|
Loading…
Reference in New Issue
Block a user