aboutsummaryrefslogtreecommitdiff
path: root/tests/functional/repl_characterization
diff options
context:
space:
mode:
authorrebecca “wiggles” turner <rbt@sent.as>2024-04-09 05:29:48 +0000
committerGerrit Code Review <gerrit@lix>2024-04-09 05:29:48 +0000
commita95c62673b06813632b5cf487519fb535e47a2b3 (patch)
treeb1442451fd5d845809c29e325e5fa4c6d301ee1c /tests/functional/repl_characterization
parentb0293f2de18f4b91d64cb18e969ddf886dc7def1 (diff)
parent727b43478cce8ebbd0f58530878d3af80a3ba233 (diff)
Merge "Add `repl-overlays`" into main
Diffstat (limited to 'tests/functional/repl_characterization')
-rw-r--r--tests/functional/repl_characterization/data/extra_data/repl-overlay-fail.nix1
-rw-r--r--tests/functional/repl_characterization/data/extra_data/repl-overlay-no-dotdotdot.nix6
-rw-r--r--tests/functional/repl_characterization/data/extra_data/repl-overlay-no-formals.nix1
-rw-r--r--tests/functional/repl_characterization/data/extra_data/repl-overlay-packages-is-pkgs.nix4
-rw-r--r--tests/functional/repl_characterization/data/extra_data/repl-overlays-compose-1.nix7
-rw-r--r--tests/functional/repl_characterization/data/extra_data/repl-overlays-compose-2.nix6
-rw-r--r--tests/functional/repl_characterization/data/repl_overlays.nix3
-rw-r--r--tests/functional/repl_characterization/data/repl_overlays.test5
-rw-r--r--tests/functional/repl_characterization/data/repl_overlays_compose.nix3
-rw-r--r--tests/functional/repl_characterization/data/repl_overlays_compose.test7
-rw-r--r--tests/functional/repl_characterization/data/repl_overlays_destructure_without_dotdotdot_errors.test10
-rw-r--r--tests/functional/repl_characterization/data/repl_overlays_destructure_without_formals_ok.test5
-rw-r--r--tests/functional/repl_characterization/data/repl_overlays_error.test22
-rw-r--r--tests/functional/repl_characterization/extra_data/repl-overlay-fail.nix1
-rw-r--r--tests/functional/repl_characterization/extra_data/repl-overlay-no-dotdotdot.nix1
-rw-r--r--tests/functional/repl_characterization/extra_data/repl-overlay-packages-is-pkgs.nix4
-rw-r--r--tests/functional/repl_characterization/extra_data/repl-overlays-compose-1.nix7
-rw-r--r--tests/functional/repl_characterization/extra_data/repl-overlays-compose-2.nix6
-rw-r--r--tests/functional/repl_characterization/repl_characterization.cc7
19 files changed, 105 insertions, 1 deletions
diff --git a/tests/functional/repl_characterization/data/extra_data/repl-overlay-fail.nix b/tests/functional/repl_characterization/data/extra_data/repl-overlay-fail.nix
new file mode 100644
index 000000000..426127916
--- /dev/null
+++ b/tests/functional/repl_characterization/data/extra_data/repl-overlay-fail.nix
@@ -0,0 +1 @@
+info: final: prev: builtins.abort "uh oh!"
diff --git a/tests/functional/repl_characterization/data/extra_data/repl-overlay-no-dotdotdot.nix b/tests/functional/repl_characterization/data/extra_data/repl-overlay-no-dotdotdot.nix
new file mode 100644
index 000000000..e242d644d
--- /dev/null
+++ b/tests/functional/repl_characterization/data/extra_data/repl-overlay-no-dotdotdot.nix
@@ -0,0 +1,6 @@
+let
+ puppy = "doggy";
+in
+ {currentSystem}: final: prev: {
+ inherit puppy;
+ }
diff --git a/tests/functional/repl_characterization/data/extra_data/repl-overlay-no-formals.nix b/tests/functional/repl_characterization/data/extra_data/repl-overlay-no-formals.nix
new file mode 100644
index 000000000..cf31550c0
--- /dev/null
+++ b/tests/functional/repl_characterization/data/extra_data/repl-overlay-no-formals.nix
@@ -0,0 +1 @@
+info: final: prev: {}
diff --git a/tests/functional/repl_characterization/data/extra_data/repl-overlay-packages-is-pkgs.nix b/tests/functional/repl_characterization/data/extra_data/repl-overlay-packages-is-pkgs.nix
new file mode 100644
index 000000000..57895a97f
--- /dev/null
+++ b/tests/functional/repl_characterization/data/extra_data/repl-overlay-packages-is-pkgs.nix
@@ -0,0 +1,4 @@
+info: final: prev:
+{
+ pkgs = final.packages.x86_64-linux;
+}
diff --git a/tests/functional/repl_characterization/data/extra_data/repl-overlays-compose-1.nix b/tests/functional/repl_characterization/data/extra_data/repl-overlays-compose-1.nix
new file mode 100644
index 000000000..055e9ea0f
--- /dev/null
+++ b/tests/functional/repl_characterization/data/extra_data/repl-overlays-compose-1.nix
@@ -0,0 +1,7 @@
+info: final: prev:
+{
+ var = prev.var + "b";
+
+ # We can access the final value of `var` here even though it isn't defined yet:
+ varUsingFinal = "final value is: " + final.newVar;
+}
diff --git a/tests/functional/repl_characterization/data/extra_data/repl-overlays-compose-2.nix b/tests/functional/repl_characterization/data/extra_data/repl-overlays-compose-2.nix
new file mode 100644
index 000000000..e88407311
--- /dev/null
+++ b/tests/functional/repl_characterization/data/extra_data/repl-overlays-compose-2.nix
@@ -0,0 +1,6 @@
+info: final: prev:
+{
+ var = prev.var + "c";
+
+ newVar = "puppy";
+}
diff --git a/tests/functional/repl_characterization/data/repl_overlays.nix b/tests/functional/repl_characterization/data/repl_overlays.nix
new file mode 100644
index 000000000..09f115f03
--- /dev/null
+++ b/tests/functional/repl_characterization/data/repl_overlays.nix
@@ -0,0 +1,3 @@
+{
+ packages.x86_64-linux.default = "my package";
+}
diff --git a/tests/functional/repl_characterization/data/repl_overlays.test b/tests/functional/repl_characterization/data/repl_overlays.test
new file mode 100644
index 000000000..56f1392e1
--- /dev/null
+++ b/tests/functional/repl_characterization/data/repl_overlays.test
@@ -0,0 +1,5 @@
+Check basic `repl-overlays` functionality.
+@args --repl-overlays
+@args ${PWD}/extra_data/repl-overlay-packages-is-pkgs.nix
+ nix-repl> pkgs
+ { default = "my package"; }
diff --git a/tests/functional/repl_characterization/data/repl_overlays_compose.nix b/tests/functional/repl_characterization/data/repl_overlays_compose.nix
new file mode 100644
index 000000000..aa6596dc7
--- /dev/null
+++ b/tests/functional/repl_characterization/data/repl_overlays_compose.nix
@@ -0,0 +1,3 @@
+{
+ var = "a";
+}
diff --git a/tests/functional/repl_characterization/data/repl_overlays_compose.test b/tests/functional/repl_characterization/data/repl_overlays_compose.test
new file mode 100644
index 000000000..b674a55be
--- /dev/null
+++ b/tests/functional/repl_characterization/data/repl_overlays_compose.test
@@ -0,0 +1,7 @@
+Check that multiple `repl-overlays` can compose together
+@args --repl-overlays
+@args "${PWD}/extra_data/repl-overlays-compose-1.nix ${PWD}/extra_data/repl-overlays-compose-2.nix"
+ nix-repl> var
+ "abc"
+ nix-repl> varUsingFinal
+ "final value is: puppy"
diff --git a/tests/functional/repl_characterization/data/repl_overlays_destructure_without_dotdotdot_errors.test b/tests/functional/repl_characterization/data/repl_overlays_destructure_without_dotdotdot_errors.test
new file mode 100644
index 000000000..daf1f27bd
--- /dev/null
+++ b/tests/functional/repl_characterization/data/repl_overlays_destructure_without_dotdotdot_errors.test
@@ -0,0 +1,10 @@
+`repl-overlays` that try to parse out the `info` argument without a `...` error.
+@args --repl-overlays
+@args ${PWD}/extra_data/repl-overlay-no-dotdotdot.nix
+@should-start false
+ error: Expected first argument of repl-overlays to have ... to allow future versions of Lix to add additional attributes to the argument
+ at $TEST_DATA/extra_data/repl-overlay-no-dotdotdot.nix:4:3:
+ 3| in
+ 4| {currentSystem}: final: prev: {
+ | ^
+ 5| inherit puppy;\n
diff --git a/tests/functional/repl_characterization/data/repl_overlays_destructure_without_formals_ok.test b/tests/functional/repl_characterization/data/repl_overlays_destructure_without_formals_ok.test
new file mode 100644
index 000000000..3aa89e434
--- /dev/null
+++ b/tests/functional/repl_characterization/data/repl_overlays_destructure_without_formals_ok.test
@@ -0,0 +1,5 @@
+`repl-overlays` that don't destructure the `info` argument are OK.
+@args --repl-overlays
+@args ${PWD}/extra_data/repl-overlay-no-formals.nix
+ nix-repl> 1
+ 1
diff --git a/tests/functional/repl_characterization/data/repl_overlays_error.test b/tests/functional/repl_characterization/data/repl_overlays_error.test
new file mode 100644
index 000000000..2d8702df1
--- /dev/null
+++ b/tests/functional/repl_characterization/data/repl_overlays_error.test
@@ -0,0 +1,22 @@
+`repl-overlays` that fail to evaluate should error.
+@args --repl-overlays
+@args ${PWD}/extra_data/repl-overlay-fail.nix
+@should-start false
+ error:
+ … while calling the 'foldl'' builtin
+ at «string»:5:13:
+ 4| functions:
+ 5| let final = builtins.foldl'
+ | ^
+ 6| (prev: function: prev // (function info final prev))
+
+ … in the right operand of the update (//) operator
+ at «string»:6:37:
+ 5| let final = builtins.foldl'
+ 6| (prev: function: prev // (function info final prev))
+ | ^
+ 7| initial
+
+ (stack trace truncated; use '--show-trace' to show the full trace)
+
+ error: evaluation aborted with the following error message: 'uh oh!'
diff --git a/tests/functional/repl_characterization/extra_data/repl-overlay-fail.nix b/tests/functional/repl_characterization/extra_data/repl-overlay-fail.nix
new file mode 100644
index 000000000..426127916
--- /dev/null
+++ b/tests/functional/repl_characterization/extra_data/repl-overlay-fail.nix
@@ -0,0 +1 @@
+info: final: prev: builtins.abort "uh oh!"
diff --git a/tests/functional/repl_characterization/extra_data/repl-overlay-no-dotdotdot.nix b/tests/functional/repl_characterization/extra_data/repl-overlay-no-dotdotdot.nix
new file mode 100644
index 000000000..1cced3324
--- /dev/null
+++ b/tests/functional/repl_characterization/extra_data/repl-overlay-no-dotdotdot.nix
@@ -0,0 +1 @@
+{currentSystem}: final: prev: {}
diff --git a/tests/functional/repl_characterization/extra_data/repl-overlay-packages-is-pkgs.nix b/tests/functional/repl_characterization/extra_data/repl-overlay-packages-is-pkgs.nix
new file mode 100644
index 000000000..57895a97f
--- /dev/null
+++ b/tests/functional/repl_characterization/extra_data/repl-overlay-packages-is-pkgs.nix
@@ -0,0 +1,4 @@
+info: final: prev:
+{
+ pkgs = final.packages.x86_64-linux;
+}
diff --git a/tests/functional/repl_characterization/extra_data/repl-overlays-compose-1.nix b/tests/functional/repl_characterization/extra_data/repl-overlays-compose-1.nix
new file mode 100644
index 000000000..055e9ea0f
--- /dev/null
+++ b/tests/functional/repl_characterization/extra_data/repl-overlays-compose-1.nix
@@ -0,0 +1,7 @@
+info: final: prev:
+{
+ var = prev.var + "b";
+
+ # We can access the final value of `var` here even though it isn't defined yet:
+ varUsingFinal = "final value is: " + final.newVar;
+}
diff --git a/tests/functional/repl_characterization/extra_data/repl-overlays-compose-2.nix b/tests/functional/repl_characterization/extra_data/repl-overlays-compose-2.nix
new file mode 100644
index 000000000..e88407311
--- /dev/null
+++ b/tests/functional/repl_characterization/extra_data/repl-overlays-compose-2.nix
@@ -0,0 +1,6 @@
+info: final: prev:
+{
+ var = prev.var + "c";
+
+ newVar = "puppy";
+}
diff --git a/tests/functional/repl_characterization/repl_characterization.cc b/tests/functional/repl_characterization/repl_characterization.cc
index eb90f349d..f84bbdaae 100644
--- a/tests/functional/repl_characterization/repl_characterization.cc
+++ b/tests/functional/repl_characterization/repl_characterization.cc
@@ -179,7 +179,12 @@ REPL_TEST(no_nested_debuggers);
REPL_TEST(regression_9917);
REPL_TEST(regression_9918);
REPL_TEST(regression_l145);
-REPL_TEST(stack_vars);
+REPL_TEST(repl_overlays);
+REPL_TEST(repl_overlays_compose);
+REPL_TEST(repl_overlays_destructure_without_dotdotdot_errors);
+REPL_TEST(repl_overlays_destructure_without_formals_ok);
+REPL_TEST(repl_overlays_error);
REPL_TEST(repl_printing);
+REPL_TEST(stack_vars);
}; // namespace nix