Merge pull request #10799 from hercules-ci/safer-tab-completion

Add repl completion test
This commit is contained in:
John Ericson 2024-05-28 11:30:56 -04:00 committed by GitHub
commit 1e2b26734b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 41 additions and 0 deletions

View file

@ -393,6 +393,7 @@
in pkgs.buildPackages.runCommand "test-rl-next-release-notes" { } '' in pkgs.buildPackages.runCommand "test-rl-next-release-notes" { } ''
LANG=C.UTF-8 ${pkgs.changelog-d-nix}/bin/changelog-d ${./doc/manual/rl-next} >$out LANG=C.UTF-8 ${pkgs.changelog-d-nix}/bin/changelog-d ${./doc/manual/rl-next} >$out
''; '';
repl-completion = nixpkgsFor.${system}.native.callPackage ./tests/repl-completion.nix { };
} // (lib.optionalAttrs (builtins.elem system linux64BitSystems)) { } // (lib.optionalAttrs (builtins.elem system linux64BitSystems)) {
dockerImage = self.hydraJobs.dockerImage.${system}; dockerImage = self.hydraJobs.dockerImage.${system};
} // (lib.optionalAttrs (!(builtins.elem system linux32BitSystems))) { } // (lib.optionalAttrs (!(builtins.elem system linux32BitSystems))) {

40
tests/repl-completion.nix Normal file
View file

@ -0,0 +1,40 @@
{ runCommand, nix, expect }:
# We only use expect when necessary, e.g. for testing tab completion in nix repl.
# See also tests/functional/repl.sh
runCommand "repl-completion" {
nativeBuildInputs = [
expect
nix
];
expectScript = ''
# Regression https://github.com/NixOS/nix/pull/10778
spawn nix repl --offline --extra-experimental-features nix-command
expect "nix-repl>"
send "foo = import ./does-not-exist.nix\n"
expect "nix-repl>"
send "foo.\t"
expect {
"nix-repl>" {
puts "Got another prompt. Good."
}
eof {
puts "Got EOF. Bad."
exit 1
}
}
exit 0
'';
passAsFile = [ "expectScript" ];
}
''
export NIX_STORE=$TMPDIR/store
export NIX_STATE_DIR=$TMPDIR/state
export HOME=$TMPDIR/home
mkdir $HOME
nix-store --init
expect $expectScriptPath
touch $out
''