#!/usr/bin/env bats load test_helpers setup() { setup_asdf_dir } teardown() { clean_asdf_dir } @test "plugin_remove_command removes a plugin" { install_dummy_plugin run asdf plugin-remove "dummy" [ "$status" -eq 0 ] [ "$output" = "plugin-remove ${ASDF_DIR}/plugins/dummy" ] } @test "plugin_remove_command should exit with 1 when not passed any arguments" { run asdf plugin-remove [ "$status" -eq 1 ] [ "$output" = "No plugin given" ] } @test "plugin_remove_command should exit with 1 when passed invalid plugin name" { run asdf plugin-remove "does-not-exist" [ "$status" -eq 1 ] [ "$output" = "No such plugin: does-not-exist" ] } @test "plugin_remove_command should remove installed versions" { install_dummy_plugin run asdf install dummy 1.0 [ "$status" -eq 0 ] [ -d "$ASDF_DIR/installs/dummy" ] run asdf plugin-remove dummy [ "$status" -eq 0 ] [ ! -d "$ASDF_DIR/installs/dummy" ] } @test "plugin_remove_command should also remove shims for that plugin" { install_dummy_plugin run asdf install dummy 1.0 [ "$status" -eq 0 ] [ -f "$ASDF_DIR/shims/dummy" ] run asdf plugin-remove dummy [ "$status" -eq 0 ] [ ! -f "$ASDF_DIR/shims/dummy" ] } @test "plugin_remove_command should not remove unrelated shims" { install_dummy_plugin run asdf install dummy 1.0 # make an unrelated shim echo "# asdf-plugin: gummy" >"$ASDF_DIR/shims/gummy" run asdf plugin-remove dummy [ "$status" -eq 0 ] # unrelated shim should exist [ -f "$ASDF_DIR/shims/gummy" ] } @test "plugin_remove_command executes pre-plugin-remove script" { install_dummy_plugin run asdf plugin-remove dummy [ "$output" = "plugin-remove ${ASDF_DIR}/plugins/dummy" ] } @test "plugin_remove_command executes configured pre hook (generic)" { install_dummy_plugin cat >"$HOME/.asdfrc" <<-'EOM' pre_asdf_plugin_remove = echo REMOVE ${@} EOM run asdf plugin-remove dummy local expected_output="REMOVE dummy plugin-remove ${ASDF_DIR}/plugins/dummy" [ "$output" = "${expected_output}" ] } @test "plugin_remove_command executes configured pre hook (specific)" { install_dummy_plugin cat >"$HOME/.asdfrc" <<-'EOM' pre_asdf_plugin_remove_dummy = echo REMOVE EOM run asdf plugin-remove dummy local expected_output="REMOVE plugin-remove ${ASDF_DIR}/plugins/dummy" [ "$output" = "${expected_output}" ] } @test "plugin_remove_command executes configured post hook (generic)" { install_dummy_plugin cat >"$HOME/.asdfrc" <<-'EOM' post_asdf_plugin_remove = echo REMOVE ${@} EOM run asdf plugin-remove dummy local expected_output="plugin-remove ${ASDF_DIR}/plugins/dummy REMOVE dummy" [ "$output" = "${expected_output}" ] } @test "plugin_remove_command executes configured post hook (specific)" { install_dummy_plugin cat >"$HOME/.asdfrc" <<-'EOM' post_asdf_plugin_remove_dummy = echo REMOVE EOM run asdf plugin-remove dummy local expected_output="plugin-remove ${ASDF_DIR}/plugins/dummy REMOVE" [ "$output" = "${expected_output}" ] }