Merge pull request #10799 from hercules-ci/safer-tab-completion
Add repl completion test (cherry picked from commit 1e2b26734b4da101247678aec405c9dcfdc33f98) Change-Id: Ic3de39e71960a05a8676190b1ec9a7f0bb6057f5 Signed-off-by: Jörg Thalheim <joerg@thalheim.io>
This commit is contained in:
parent
4734ce7831
commit
b588a761fe
2 changed files with 46 additions and 0 deletions
|
@ -233,6 +233,11 @@
|
|||
}
|
||||
);
|
||||
|
||||
# Completion tests for the Nix REPL.
|
||||
repl-completion = forAllSystems (
|
||||
system: nixpkgsFor.${system}.native.callPackage ./tests/repl-completion.nix { }
|
||||
);
|
||||
|
||||
# Perl bindings for various platforms.
|
||||
perlBindings = forAllSystems (system: nixpkgsFor.${system}.native.nix.passthru.perl-bindings);
|
||||
|
||||
|
@ -330,6 +335,7 @@
|
|||
rl-next = self.hydraJobs.rl-next.${system}.user;
|
||||
# Will be empty attr set on i686-linux, and filtered out by forAvailableSystems.
|
||||
pre-commit = self.hydraJobs.pre-commit.${system};
|
||||
repl-completion = self.hydraJobs.repl-completion.${system};
|
||||
}
|
||||
// (lib.optionalAttrs (builtins.elem system linux64BitSystems)) {
|
||||
dockerImage = self.hydraJobs.dockerImage.${system};
|
||||
|
|
40
tests/repl-completion.nix
Normal file
40
tests/repl-completion.nix
Normal 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
|
||||
''
|
Loading…
Reference in a new issue