mirror of
https://github.com/NixOS/nix
synced 2025-07-10 04:43:53 +02:00
Merge remote-tracking branch 'origin/master' into flakes
This commit is contained in:
commit
ebc4dae517
30 changed files with 589 additions and 61 deletions
86
tests/function-trace.sh
Executable file
86
tests/function-trace.sh
Executable file
|
@ -0,0 +1,86 @@
|
|||
source common.sh
|
||||
|
||||
set +x
|
||||
|
||||
expect_trace() {
|
||||
expr="$1"
|
||||
expect="$2"
|
||||
actual=$(
|
||||
nix-instantiate \
|
||||
--trace-function-calls \
|
||||
-vvvv \
|
||||
--expr "$expr" 2>&1 \
|
||||
| grep "function-trace" \
|
||||
| sed -e 's/ [0-9]*$//'
|
||||
);
|
||||
|
||||
echo -n "Tracing expression '$expr'"
|
||||
set +e
|
||||
msg=$(diff -swB \
|
||||
<(echo "$expect") \
|
||||
<(echo "$actual")
|
||||
);
|
||||
result=$?
|
||||
set -e
|
||||
if [ $result -eq 0 ]; then
|
||||
echo " ok."
|
||||
else
|
||||
echo " failed. difference:"
|
||||
echo "$msg"
|
||||
return $result
|
||||
fi
|
||||
}
|
||||
|
||||
# failure inside a tryEval
|
||||
expect_trace 'builtins.tryEval (throw "example")' "
|
||||
function-trace entered undefined position at
|
||||
function-trace exited undefined position at
|
||||
function-trace entered (string):1:1 at
|
||||
function-trace entered (string):1:19 at
|
||||
function-trace exited (string):1:19 at
|
||||
function-trace exited (string):1:1 at
|
||||
"
|
||||
|
||||
# Missing argument to a formal function
|
||||
expect_trace '({ x }: x) { }' "
|
||||
function-trace entered undefined position at
|
||||
function-trace exited undefined position at
|
||||
function-trace entered (string):1:1 at
|
||||
function-trace exited (string):1:1 at
|
||||
"
|
||||
|
||||
# Too many arguments to a formal function
|
||||
expect_trace '({ x }: x) { x = "x"; y = "y"; }' "
|
||||
function-trace entered undefined position at
|
||||
function-trace exited undefined position at
|
||||
function-trace entered (string):1:1 at
|
||||
function-trace exited (string):1:1 at
|
||||
"
|
||||
|
||||
# Not enough arguments to a lambda
|
||||
expect_trace '(x: y: x + y) 1' "
|
||||
function-trace entered undefined position at
|
||||
function-trace exited undefined position at
|
||||
function-trace entered (string):1:1 at
|
||||
function-trace exited (string):1:1 at
|
||||
"
|
||||
|
||||
# Too many arguments to a lambda
|
||||
expect_trace '(x: x) 1 2' "
|
||||
function-trace entered undefined position at
|
||||
function-trace exited undefined position at
|
||||
function-trace entered (string):1:1 at
|
||||
function-trace exited (string):1:1 at
|
||||
function-trace entered (string):1:1 at
|
||||
function-trace exited (string):1:1 at
|
||||
"
|
||||
|
||||
# Not a function
|
||||
expect_trace '1 2' "
|
||||
function-trace entered undefined position at
|
||||
function-trace exited undefined position at
|
||||
function-trace entered (string):1:1 at
|
||||
function-trace exited (string):1:1 at
|
||||
"
|
||||
|
||||
set -e
|
|
@ -2,9 +2,12 @@ source common.sh
|
|||
|
||||
clearStore
|
||||
|
||||
garbage1=$(nix add-to-store --name garbage1 ./tarball.sh)
|
||||
garbage2=$(nix add-to-store --name garbage2 ./tarball.sh)
|
||||
garbage3=$(nix add-to-store --name garbage3 ./tarball.sh)
|
||||
garbage1=$(nix add-to-store --name garbage1 ./nar-access.sh)
|
||||
garbage2=$(nix add-to-store --name garbage2 ./nar-access.sh)
|
||||
garbage3=$(nix add-to-store --name garbage3 ./nar-access.sh)
|
||||
|
||||
ls -l $garbage3
|
||||
POSIXLY_CORRECT=1 du $garbage3
|
||||
|
||||
fake_free=$TEST_ROOT/fake-free
|
||||
export _NIX_TEST_FREE_SPACE_FILE=$fake_free
|
||||
|
@ -19,7 +22,7 @@ with import ./config.nix; mkDerivation {
|
|||
echo foo > \$out/bar
|
||||
echo 1...
|
||||
sleep 2
|
||||
echo 100 > $fake_free
|
||||
echo 200 > $fake_free
|
||||
echo 2...
|
||||
sleep 2
|
||||
echo 3...
|
||||
|
@ -29,7 +32,7 @@ with import ./config.nix; mkDerivation {
|
|||
EOF
|
||||
)
|
||||
|
||||
nix build --impure -o $TEST_ROOT/result-A -L "($expr)" \
|
||||
nix build --impure -v -o $TEST_ROOT/result-A -L "($expr)" \
|
||||
--min-free 1000 --max-free 2000 --min-free-check-interval 1 &
|
||||
pid=$!
|
||||
|
||||
|
@ -41,7 +44,7 @@ with import ./config.nix; mkDerivation {
|
|||
echo foo > \$out/bar
|
||||
echo 1...
|
||||
sleep 2
|
||||
echo 100 > $fake_free
|
||||
echo 200 > $fake_free
|
||||
echo 2...
|
||||
sleep 2
|
||||
echo 3...
|
||||
|
@ -50,7 +53,7 @@ with import ./config.nix; mkDerivation {
|
|||
EOF
|
||||
)
|
||||
|
||||
nix build --impure -o $TEST_ROOT/result-B -L "($expr2)" \
|
||||
nix build --impure -v -o $TEST_ROOT/result-B -L "($expr2)" \
|
||||
--min-free 1000 --max-free 2000 --min-free-check-interval 1
|
||||
|
||||
wait "$pid"
|
||||
|
|
|
@ -30,6 +30,7 @@ nix_tests = \
|
|||
search.sh \
|
||||
nix-copy-ssh.sh \
|
||||
post-hook.sh \
|
||||
function-trace.sh \
|
||||
flakes.sh
|
||||
# parallel.sh
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo Pushing "$@" to "$REMOTE_STORE"
|
||||
echo -n "$OUT_PATHS" | xargs -d: nix copy --to "$REMOTE_STORE" --no-require-sigs
|
||||
printf "%s" "$OUT_PATHS" | xargs -d: nix copy --to "$REMOTE_STORE" --no-require-sigs
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue