From 7d361f1a828ee800e2e5353169c31134cbd08f0d Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Sat, 9 Mar 2024 23:59:50 -0800 Subject: [PATCH] Test that :st does ... something Change-Id: I97c00b5eb1288f68d8c2b484436cc185d040b8b2 --- .../repl_characterization/data/stack_vars.nix | 9 +++ .../data/stack_vars.test | 74 +++++++++++++++++++ .../repl_characterization.cc | 1 + 3 files changed, 84 insertions(+) create mode 100644 tests/functional/repl_characterization/data/stack_vars.nix create mode 100644 tests/functional/repl_characterization/data/stack_vars.test diff --git a/tests/functional/repl_characterization/data/stack_vars.nix b/tests/functional/repl_characterization/data/stack_vars.nix new file mode 100644 index 000000000..1476bc251 --- /dev/null +++ b/tests/functional/repl_characterization/data/stack_vars.nix @@ -0,0 +1,9 @@ +let + a = builtins.trace "before inner break" ( + let meow' = 3; in builtins.break { msg = "hello"; } + ); + b = builtins.trace "before outer break" ( + let meow = 2; in builtins.break a + ); +in + b diff --git a/tests/functional/repl_characterization/data/stack_vars.test b/tests/functional/repl_characterization/data/stack_vars.test new file mode 100644 index 000000000..0537f9c03 --- /dev/null +++ b/tests/functional/repl_characterization/data/stack_vars.test @@ -0,0 +1,74 @@ + trace: before outer break + info: breakpoint reached + +Here we are in the outer break and the let of "meow". st should show meow there +as it is in scope. + nix-repl> :st + + 0: error: breakpoint reached + «none»:0 + Env level 0 + static: meow + + Env level 1 + static: a b + + Env level 2 + builtins true false null scopedImport import isNull break abort throw derivationStrict placeholder baseNameOf dirOf removeAttrs map toString fetchMercurial fetchTree fetchTarball fetchGit fromTOML derivation + + nix-repl> meow + 2 + +If we :st past the frame in the backtrace with the meow in it, the meow should not be there. + + nix-repl> :st 3 + + 3: while calling a function + TEST_DATA/stack_vars.nix:5:7 + + 4| ); + 5| b = builtins.trace "before outer break" ( + | ^ + 6| let meow = 2; in builtins.break a + + Env level 0 + static: a b + + Env level 1 + builtins true false null scopedImport import isNull break abort throw derivationStrict placeholder baseNameOf dirOf removeAttrs map toString fetchMercurial fetchTree fetchTarball fetchGit fromTOML derivation + + nix-repl> :c + trace: before inner break + info: breakpoint reached + + nix-repl> :st + + 0: error: breakpoint reached + «none»:0 + Env level 0 + static: meow' + + Env level 1 + static: a b + + Env level 2 + builtins true false null scopedImport import isNull break abort throw derivationStrict placeholder baseNameOf dirOf removeAttrs map toString fetchMercurial fetchTree fetchTarball fetchGit fromTOML derivation + + nix-repl> meow' + 3 + + nix-repl> :st 3 + + 3: while calling a function + TEST_DATA/stack_vars.nix:2:7 + + 1| let + 2| a = builtins.trace "before inner break" ( + | ^ + 3| let meow' = 3; in builtins.break { msg = "hello"; } + + Env level 0 + static: a b + + Env level 1 + builtins true false null scopedImport import isNull break abort throw derivationStrict placeholder baseNameOf dirOf removeAttrs map toString fetchMercurial fetchTree fetchTarball fetchGit fromTOML derivation diff --git a/tests/functional/repl_characterization/repl_characterization.cc b/tests/functional/repl_characterization/repl_characterization.cc index 1d497fe13..7aa7dac5c 100644 --- a/tests/functional/repl_characterization/repl_characterization.cc +++ b/tests/functional/repl_characterization/repl_characterization.cc @@ -124,5 +124,6 @@ TEST_F(ReplSessionTest, repl_basic) DEBUGGER_TEST(regression_9918); DEBUGGER_TEST(regression_9917); +DEBUGGER_TEST(stack_vars); };