diff --git a/src/libcmd/repl.cc b/src/libcmd/repl.cc index 63f6c1bdd..0aed7eda8 100644 --- a/src/libcmd/repl.cc +++ b/src/libcmd/repl.cc @@ -790,6 +790,19 @@ void NixRepl::addAttrsToScope(Value & attrs) staticEnv->sort(); staticEnv->deduplicate(); notice("Added %1% variables.", attrs.attrs()->size()); + + const int max_print = 10; + int count = 0; + for (auto & i : *attrs.attrs()) { + count += 1; + if (count > max_print) { + notice("... And %1% other variables", attrs.attrs()->size() - max_print); + break; + } + + std::string_view name = state->symbols[i.name]; + notice("- %1%", name); + } } diff --git a/tests/functional/repl.sh b/tests/functional/repl.sh index 706e0f5db..cdd4d9dd4 100755 --- a/tests/functional/repl.sh +++ b/tests/functional/repl.sh @@ -153,6 +153,49 @@ foo + baz ' "3" \ ./flake ./flake\#bar --experimental-features 'flakes' +testReplResponse ' +:a { a = 1; b = 2; longerName = 3; "with spaces" = 4; } +' 'Added 4 variables. +- a +- b +- longerName +- with spaces +' + +cat < attribute-set.nix +{ + a = 1; + b = 2; + longerName = 3; + "with spaces" = 4; +} +EOF +testReplResponse ' +:l ./attribute-set.nix +' 'Added 4 variables. +- a +- b +- longerName +- with spaces +' + +testReplResponse $' +attributes = builtins.foldl\' (x: y: x // y) {} (map (x: { ${builtins.toString x} = x; }) (builtins.genList (x: x) 13)) +:a attributes +' 'Added 13 variables. +- 0 +- 1 +- 2 +- 3 +- 4 +- 5 +- 6 +- 7 +- 8 +- 9 +... And 3 other variables +' + # Test the `:reload` mechansim with flakes: # - Eval `./flake#changingThing` # - Modify the flake @@ -302,6 +345,8 @@ runRepl () { -e "s@$testDirNoUnderscores@/path/to/tests/functional@g" \ -e "s@$nixVersion@@g" \ -e "s@Added [0-9]* variables@Added variables@g" \ + -e '/^- /d' \ + -e '/\.\.\. And [0-9]* other variables/d' \ | grep -vF $'warning: you don\'t have Internet access; disabling some network-dependent features' \ ; }