From e00e4ac5604a168de1f46cdb6ddf5de07ce173db Mon Sep 17 00:00:00 2001 From: bootleq Date: Tue, 20 Feb 2024 19:33:36 +0800 Subject: [PATCH] Add test to reproduce the misleading message Simulation steps, where dummy/dummyman behave like node/npm - User install dummy 1.0, with `dummyman` command shimmed - User install dummy 1.3 - User run `dummyman` will print incorrect message which suggest to install `dummy 1.3` (has already installed), or set `dummy 1.0` in tool-versions (is not what user want). --- test/shim_exec.bats | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/shim_exec.bats b/test/shim_exec.bats index 5c6d0673..93ddc195 100644 --- a/test/shim_exec.bats +++ b/test/shim_exec.bats @@ -129,6 +129,36 @@ teardown() { echo "$output" | grep -q "dummy 1.0" 2>/dev/null } +@test "issue #928" { + # Install 1.0, with fake "dummyman" command, shimmed for 1.0 + run asdf install dummy 1.0 + echo "echo Dummy Manager" >"$ASDF_DIR/installs/dummy/1.0/bin/dummyman" + chmod +x "$ASDF_DIR/installs/dummy/1.0/bin/dummyman" + run asdf reshim dummy 1.0 + + # Install 1.3 + run asdf install dummy 1.3 + + echo "dummy 1.3" >"$PROJECT_DIR/.tool-versions" + + # reshim doesn't help + run asdf reshim dummy + run asdf shim-versions dummyman + [ "$status" -eq 0 ] + [ "$output" = "dummy 1.0" ] + + run "$ASDF_DIR/shims/dummyman" + [ "$status" -eq 126 ] + echo ">> $output" >&3 + + # Below is current (misleading) message + echo "$output" | grep -q "No preset version installed for command dummyman" 2>/dev/null + echo "$output" | grep -q "Please install a version by running one of the following:" 2>/dev/null + echo "$output" | grep -q "asdf install dummy 1.3" 2>/dev/null + echo "$output" | grep -q "or add one of the following versions in your config file at $PROJECT_DIR/.tool-versions" 2>/dev/null + echo "$output" | grep -q "dummy 1.0" 2>/dev/null +} + @test "shim exec should execute first plugin that is installed and set" { run asdf install dummy 2.0.0 run asdf install dummy 3.0