2017-07-23 09:34:58 -07:00
|
|
|
#!/usr/bin/env bats
|
|
|
|
|
|
|
|
load test_helpers
|
|
|
|
|
|
|
|
setup() {
|
|
|
|
setup_asdf_dir
|
|
|
|
}
|
|
|
|
|
|
|
|
teardown() {
|
|
|
|
clean_asdf_dir
|
|
|
|
}
|
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
@test "plugin_add command with plugin name matching all valid regex chars succeeds" {
|
|
|
|
install_mock_plugin_repo "plugin_with-all-valid-CHARS-123"
|
|
|
|
|
|
|
|
run asdf plugin add "plugin_with-all-valid-CHARS-123" "${BASE_DIR}/repo-plugin_with-all-valid-CHARS-123"
|
|
|
|
[ "$status" -eq 0 ]
|
|
|
|
|
|
|
|
run asdf plugin-list
|
|
|
|
[ "$output" = "plugin_with-all-valid-CHARS-123" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
@test "plugin_add command with plugin name not matching valid regex fails" {
|
|
|
|
run asdf plugin add "invalid\$plugin\$name"
|
|
|
|
[ "$status" -eq 1 ]
|
|
|
|
[ "$output" = "invalid\$plugin\$name is invalid. Name must match regex ^[a-zA-Z0-9_-]+$" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
@test "plugin_add command with plugin name not matching valid regex fails again" {
|
|
|
|
run asdf plugin add "#invalid#plugin#name"
|
|
|
|
[ "$status" -eq 1 ]
|
|
|
|
[ "$output" = "#invalid#plugin#name is invalid. Name must match regex ^[a-zA-Z0-9_-]+$" ]
|
|
|
|
}
|
|
|
|
|
2017-07-23 09:34:58 -07:00
|
|
|
@test "plugin_add command with no URL specified adds a plugin using repo" {
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "elixir"
|
2017-07-23 09:34:58 -07:00
|
|
|
[ "$status" -eq 0 ]
|
|
|
|
|
2019-01-20 01:13:20 -07:00
|
|
|
run asdf plugin-list
|
2018-01-13 21:50:49 -07:00
|
|
|
# whitespace between 'elixir' and url is from printf %-15s %s format
|
2018-01-14 01:38:00 -07:00
|
|
|
[ "$output" = "elixir" ]
|
2017-07-23 09:34:58 -07:00
|
|
|
}
|
2017-07-25 17:03:30 -07:00
|
|
|
|
2022-05-10 15:36:28 -07:00
|
|
|
@test "plugin_add command with no URL specified adds a plugin using repo from config" {
|
|
|
|
ASDF_CONFIG_FILE=$BATS_TMPDIR/asdfrc
|
|
|
|
cat > $ASDF_CONFIG_FILE <<-EOM
|
|
|
|
asdf_repository_url = "https://github.com/asdf-vm/asdf-plugins.git"
|
|
|
|
EOM
|
|
|
|
|
|
|
|
run asdf plugin add "elixir"
|
|
|
|
[ "$status" -eq 0 ]
|
|
|
|
|
|
|
|
run asdf plugin-list
|
|
|
|
# whitespace between 'elixir' and url is from printf %-15s %s format
|
|
|
|
[ "$output" = "elixir" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
@test "plugin_add command with no URL specified fails to add a plugin when no default repo" {
|
|
|
|
ASDF_CONFIG_FILE=$BATS_TMPDIR/asdfrc
|
|
|
|
cat > $ASDF_CONFIG_FILE <<-EOM
|
|
|
|
# no asdf_repository_url for the tests
|
|
|
|
EOM
|
|
|
|
|
|
|
|
run asdf plugin add "elixir"
|
|
|
|
[ "$status" -eq 1 ]
|
|
|
|
[ "$output" = "No short-name plugin repository configured" ]
|
|
|
|
}
|
|
|
|
|
2020-03-21 06:59:33 -07:00
|
|
|
@test "plugin_add command with URL specified adds a plugin using repo" {
|
|
|
|
install_mock_plugin_repo "dummy"
|
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "dummy" "${BASE_DIR}/repo-dummy"
|
2020-03-21 06:59:33 -07:00
|
|
|
[ "$status" -eq 0 ]
|
|
|
|
|
|
|
|
run asdf plugin-list
|
|
|
|
# whitespace between 'elixir' and url is from printf %-15s %s format
|
|
|
|
[ "$output" = "dummy" ]
|
|
|
|
}
|
|
|
|
|
2020-03-31 06:20:10 -07:00
|
|
|
@test "plugin_add command with URL specified run twice returns error second time" {
|
|
|
|
install_mock_plugin_repo "dummy"
|
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "dummy" "${BASE_DIR}/repo-dummy"
|
|
|
|
run asdf plugin add "dummy" "${BASE_DIR}/repo-dummy"
|
2020-03-31 06:20:10 -07:00
|
|
|
[ "$status" -eq 2 ]
|
|
|
|
[ "$output" = "Plugin named dummy already added" ]
|
|
|
|
}
|
|
|
|
|
2017-07-25 17:03:30 -07:00
|
|
|
@test "plugin_add command with no URL specified fails if the plugin doesn't exist" {
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "does-not-exist"
|
2017-07-25 17:03:30 -07:00
|
|
|
[ "$status" -eq 1 ]
|
|
|
|
echo "$output" | grep "plugin does-not-exist not found in repository"
|
|
|
|
}
|
2020-03-21 06:59:33 -07:00
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
@test "plugin_add command executes post-plugin add script" {
|
2020-03-21 18:57:54 -07:00
|
|
|
install_mock_plugin_repo "dummy"
|
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "dummy" "${BASE_DIR}/repo-dummy"
|
|
|
|
[ "$output" = "plugin add path=${ASDF_DIR}/plugins/dummy source_url=${BASE_DIR}/repo-dummy" ]
|
2020-03-21 18:57:54 -07:00
|
|
|
}
|
|
|
|
|
2020-03-21 06:59:33 -07:00
|
|
|
@test "plugin_add command executes configured pre hook (generic)" {
|
|
|
|
install_mock_plugin_repo "dummy"
|
|
|
|
|
|
|
|
cat > $HOME/.asdfrc <<-'EOM'
|
|
|
|
pre_asdf_plugin_add = echo ADD ${@}
|
|
|
|
EOM
|
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "dummy" "${BASE_DIR}/repo-dummy"
|
2020-03-21 06:59:33 -07:00
|
|
|
|
|
|
|
local expected_output="ADD dummy
|
2021-07-29 15:49:01 -07:00
|
|
|
plugin add path=${ASDF_DIR}/plugins/dummy source_url=${BASE_DIR}/repo-dummy"
|
2020-03-21 06:59:33 -07:00
|
|
|
[ "$output" = "${expected_output}" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
@test "plugin_add command executes configured pre hook (specific)" {
|
|
|
|
install_mock_plugin_repo "dummy"
|
|
|
|
|
|
|
|
cat > $HOME/.asdfrc <<-'EOM'
|
|
|
|
pre_asdf_plugin_add_dummy = echo ADD
|
|
|
|
EOM
|
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "dummy" "${BASE_DIR}/repo-dummy"
|
2020-03-21 06:59:33 -07:00
|
|
|
|
|
|
|
local expected_output="ADD
|
2021-07-29 15:49:01 -07:00
|
|
|
plugin add path=${ASDF_DIR}/plugins/dummy source_url=${BASE_DIR}/repo-dummy"
|
2020-03-21 06:59:33 -07:00
|
|
|
[ "$output" = "${expected_output}" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
@test "plugin_add command executes configured post hook (generic)" {
|
|
|
|
install_mock_plugin_repo "dummy"
|
|
|
|
|
|
|
|
cat > $HOME/.asdfrc <<-'EOM'
|
|
|
|
post_asdf_plugin_add = echo ADD ${@}
|
|
|
|
EOM
|
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "dummy" "${BASE_DIR}/repo-dummy"
|
2020-03-21 06:59:33 -07:00
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
local expected_output="plugin add path=${ASDF_DIR}/plugins/dummy source_url=${BASE_DIR}/repo-dummy
|
2020-03-21 06:59:33 -07:00
|
|
|
ADD dummy"
|
|
|
|
[ "$output" = "${expected_output}" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
@test "plugin_add command executes configured post hook (specific)" {
|
|
|
|
install_mock_plugin_repo "dummy"
|
|
|
|
|
|
|
|
cat > $HOME/.asdfrc <<-'EOM'
|
|
|
|
post_asdf_plugin_add_dummy = echo ADD
|
|
|
|
EOM
|
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
run asdf plugin add "dummy" "${BASE_DIR}/repo-dummy"
|
2020-03-21 06:59:33 -07:00
|
|
|
|
2021-07-29 15:49:01 -07:00
|
|
|
local expected_output="plugin add path=${ASDF_DIR}/plugins/dummy source_url=${BASE_DIR}/repo-dummy
|
2020-03-21 06:59:33 -07:00
|
|
|
ADD"
|
|
|
|
[ "$output" = "${expected_output}" ]
|
|
|
|
}
|