Skip to content

Commit

Permalink
Test that :st does ... something
Browse files Browse the repository at this point in the history
  • Loading branch information
lf- committed Mar 10, 2024
1 parent 348b254 commit c309e02
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 0 deletions.
9 changes: 9 additions & 0 deletions tests/functional/repl_characterization/data/stack_vars.nix
Original file line number Diff line number Diff line change
@@ -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
74 changes: 74 additions & 0 deletions tests/functional/repl_characterization/data/stack_vars.test
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -127,5 +127,6 @@ TEST_F(ReplSessionTest, repl_basic)

DEBUGGER_TEST(regression_9918);
DEBUGGER_TEST(regression_9917);
DEBUGGER_TEST(stack_vars);

};

0 comments on commit c309e02

Please sign in to comment.