From 7210ed1b87410a0df597c0c4efe642bf82cc2b06 Mon Sep 17 00:00:00 2001 From: piegames Date: Sun, 18 Aug 2024 16:02:23 +0200 Subject: libexpr: Soft-deprecate __overrides Change-Id: I787e69e1dad6edc5ccdb747b74a9ccd6e8e13bb3 --- tests/functional/lang.sh | 25 ++++++++++++++++------ tests/functional/lang/eval-fail-set-override.flags | 1 + tests/functional/lang/eval-okay-attrs6.flags | 1 + tests/functional/lang/eval-okay-inherit-from.flags | 1 + tests/functional/lang/eval-okay-overrides.flags | 1 + .../lang/parse-okay-rec-set-override-nowarning.exp | 1 + .../parse-okay-rec-set-override-nowarning.flags | 1 + .../lang/parse-okay-rec-set-override-nowarning.nix | 1 + .../parse-okay-rec-set-override-warning.err.exp | 2 ++ .../lang/parse-okay-rec-set-override-warning.exp | 1 + .../lang/parse-okay-rec-set-override-warning.nix | 9 ++++++++ .../lang/parse-okay-regression-20041027.flags | 1 + tests/functional/lang/parse-okay-url.flags | 1 + 13 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 tests/functional/lang/eval-fail-set-override.flags create mode 100644 tests/functional/lang/eval-okay-attrs6.flags create mode 100644 tests/functional/lang/eval-okay-inherit-from.flags create mode 100644 tests/functional/lang/eval-okay-overrides.flags create mode 120000 tests/functional/lang/parse-okay-rec-set-override-nowarning.exp create mode 100644 tests/functional/lang/parse-okay-rec-set-override-nowarning.flags create mode 120000 tests/functional/lang/parse-okay-rec-set-override-nowarning.nix create mode 100644 tests/functional/lang/parse-okay-rec-set-override-warning.err.exp create mode 100644 tests/functional/lang/parse-okay-rec-set-override-warning.exp create mode 100644 tests/functional/lang/parse-okay-rec-set-override-warning.nix create mode 100644 tests/functional/lang/parse-okay-regression-20041027.flags create mode 100644 tests/functional/lang/parse-okay-url.flags (limited to 'tests') diff --git a/tests/functional/lang.sh b/tests/functional/lang.sh index aa41b41d8..59db10340 100755 --- a/tests/functional/lang.sh +++ b/tests/functional/lang.sh @@ -53,10 +53,11 @@ done for i in lang/parse-okay-*.nix; do echo "parsing $i (should succeed)"; i=$(basename "$i" .nix) - # Hard-code that these two files are allowed to use url literals (because they test them) - if [[ "$i" == "parse-okay-url" || "$i" == "parse-okay-regression-20041027" ]] - then - extraArgs="--extra-deprecated-features url-literals" + + if [ -e "lang/$i.flags" ]; then + extraArgs="$(cat "lang/$i.flags")" + else + extraArgs="" fi if expect 0 nix-instantiate --parse ${extraArgs-} - < "lang/$i.nix" \ @@ -75,8 +76,14 @@ done for i in lang/eval-fail-*.nix; do echo "evaluating $i (should fail)"; i=$(basename "$i" .nix) + + if [ -e "lang/$i.flags" ]; then + extraArgs="$(cat "lang/$i.flags")" + else + extraArgs="" + fi if - expectStderr 1 nix-instantiate --eval --strict --show-trace "lang/$i.nix" \ + expectStderr 1 nix-instantiate --eval --strict --show-trace ${extraArgs-} "lang/$i.nix" \ | sed "s!$(pwd)!/pwd!g" > "lang/$i.err" then diffAndAccept "$i" err err.exp @@ -90,8 +97,14 @@ for i in lang/eval-okay-*.nix; do echo "evaluating $i (should succeed)"; i=$(basename "$i" .nix) + if [ -e "lang/$i.flags" ]; then + extraArgs="$(cat "lang/$i.flags")" + else + extraArgs="" + fi + if test -e "lang/$i.exp.xml"; then - if expect 0 nix-instantiate --eval --xml --no-location --strict \ + if expect 0 nix-instantiate --eval --xml --no-location --strict ${extraArgs-} \ "lang/$i.nix" > "lang/$i.out.xml" then diffAndAccept "$i" out.xml exp.xml diff --git a/tests/functional/lang/eval-fail-set-override.flags b/tests/functional/lang/eval-fail-set-override.flags new file mode 100644 index 000000000..a0e513a81 --- /dev/null +++ b/tests/functional/lang/eval-fail-set-override.flags @@ -0,0 +1 @@ +--extra-deprecated-features rec-set-overrides diff --git a/tests/functional/lang/eval-okay-attrs6.flags b/tests/functional/lang/eval-okay-attrs6.flags new file mode 100644 index 000000000..a0e513a81 --- /dev/null +++ b/tests/functional/lang/eval-okay-attrs6.flags @@ -0,0 +1 @@ +--extra-deprecated-features rec-set-overrides diff --git a/tests/functional/lang/eval-okay-inherit-from.flags b/tests/functional/lang/eval-okay-inherit-from.flags new file mode 100644 index 000000000..a0e513a81 --- /dev/null +++ b/tests/functional/lang/eval-okay-inherit-from.flags @@ -0,0 +1 @@ +--extra-deprecated-features rec-set-overrides diff --git a/tests/functional/lang/eval-okay-overrides.flags b/tests/functional/lang/eval-okay-overrides.flags new file mode 100644 index 000000000..a0e513a81 --- /dev/null +++ b/tests/functional/lang/eval-okay-overrides.flags @@ -0,0 +1 @@ +--extra-deprecated-features rec-set-overrides diff --git a/tests/functional/lang/parse-okay-rec-set-override-nowarning.exp b/tests/functional/lang/parse-okay-rec-set-override-nowarning.exp new file mode 120000 index 000000000..687e738ee --- /dev/null +++ b/tests/functional/lang/parse-okay-rec-set-override-nowarning.exp @@ -0,0 +1 @@ +parse-okay-rec-set-override-warning.exp \ No newline at end of file diff --git a/tests/functional/lang/parse-okay-rec-set-override-nowarning.flags b/tests/functional/lang/parse-okay-rec-set-override-nowarning.flags new file mode 100644 index 000000000..a0e513a81 --- /dev/null +++ b/tests/functional/lang/parse-okay-rec-set-override-nowarning.flags @@ -0,0 +1 @@ +--extra-deprecated-features rec-set-overrides diff --git a/tests/functional/lang/parse-okay-rec-set-override-nowarning.nix b/tests/functional/lang/parse-okay-rec-set-override-nowarning.nix new file mode 120000 index 000000000..f92d1596f --- /dev/null +++ b/tests/functional/lang/parse-okay-rec-set-override-nowarning.nix @@ -0,0 +1 @@ +parse-okay-rec-set-override-warning.nix \ No newline at end of file diff --git a/tests/functional/lang/parse-okay-rec-set-override-warning.err.exp b/tests/functional/lang/parse-okay-rec-set-override-warning.err.exp new file mode 100644 index 000000000..5ed2d7dee --- /dev/null +++ b/tests/functional/lang/parse-okay-rec-set-override-warning.err.exp @@ -0,0 +1,2 @@ +warning: __overrides found at «stdin»:3:16. This feature is deprecated and will be removed in the future. Use --extra-deprecated-features rec-set-overrides to silence this warning. +warning: __overrides found at «stdin»:4:2. This feature is deprecated and will be removed in the future. Use --extra-deprecated-features rec-set-overrides to silence this warning. diff --git a/tests/functional/lang/parse-okay-rec-set-override-warning.exp b/tests/functional/lang/parse-okay-rec-set-override-warning.exp new file mode 100644 index 000000000..ea17c88f5 --- /dev/null +++ b/tests/functional/lang/parse-okay-rec-set-override-warning.exp @@ -0,0 +1 @@ +[ ({ a = rec { __overrides = { }; }; }) (rec { __overrides = { }; }) ({ __overrides = { }; }) (rec { "${("__overrides" + "")}" = { }; }) ] diff --git a/tests/functional/lang/parse-okay-rec-set-override-warning.nix b/tests/functional/lang/parse-okay-rec-set-override-warning.nix new file mode 100644 index 000000000..a81d46d53 --- /dev/null +++ b/tests/functional/lang/parse-okay-rec-set-override-warning.nix @@ -0,0 +1,9 @@ +[ + # Should warn + { a = rec {}; a.__overrides = {}; } + rec { __overrides = {}; } + # Should not warn: Not recursive + { __overrides = {}; } + # Should not warn: Dynamic + rec { ${"__overrides" + ""} = {}; } +] diff --git a/tests/functional/lang/parse-okay-regression-20041027.flags b/tests/functional/lang/parse-okay-regression-20041027.flags new file mode 100644 index 000000000..86329a66e --- /dev/null +++ b/tests/functional/lang/parse-okay-regression-20041027.flags @@ -0,0 +1 @@ +--extra-deprecated-features url-literals diff --git a/tests/functional/lang/parse-okay-url.flags b/tests/functional/lang/parse-okay-url.flags new file mode 100644 index 000000000..86329a66e --- /dev/null +++ b/tests/functional/lang/parse-okay-url.flags @@ -0,0 +1 @@ +--extra-deprecated-features url-literals -- cgit v1.2.3