This commit is contained in:
Roberto Tyley 2024-12-18 16:16:32 +00:00 committed by GitHub
commit 53af3b4cec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 62 additions and 11 deletions

View File

@ -1,6 +1,8 @@
# -*- sh -*-
# shellcheck source=lib/functions/plugins.bash
. "$(dirname "$(dirname "$0")")/lib/functions/plugins.bash"
# shellcheck source=lib/functions/versions.bash
. "$(dirname "$(dirname "$0")")/lib/functions/versions.bash"
# shellcheck disable=SC2059
plugin_current_command() {
@ -21,7 +23,8 @@ plugin_current_command() {
local description=""
IFS=' ' read -r -a versions <<<"$full_version"
for version in "${versions[@]}"; do
for version_spec in "${versions[@]}"; do
version="$(resolve_version_spec "$version_spec")"
if ! (check_if_version_exists "$plugin_name" "$version"); then
version_not_installed="$version"
fi

View File

@ -1,4 +1,6 @@
# -*- sh -*-
# shellcheck source=lib/functions/versions.bash
. "$(dirname "$(dirname "$0")")/lib/functions/versions.bash"
shim_env_command() {
local shim_name="$1"

View File

@ -1,4 +1,6 @@
# -*- sh -*-
# shellcheck source=lib/functions/versions.bash
. "$(dirname "$(dirname "$0")")/lib/functions/versions.bash"
shim_exec_command() {
local shim_name

View File

@ -1,4 +1,6 @@
# -*- sh -*-
# shellcheck source=lib/functions/versions.bash
. "$(dirname "$(dirname "$0")")/lib/functions/versions.bash"
which_command() {
local shim_name

View File

@ -37,15 +37,7 @@ version_command() {
declare -a resolved_versions
local item
for item in "${!versions[@]}"; do
IFS=':' read -r -a version_info <<<"${versions[$item]}"
if [ "${version_info[0]}" = "latest" ] && [ -n "${version_info[1]}" ]; then
version=$(latest_command "$plugin_name" "${version_info[1]}")
elif [ "${version_info[0]}" = "latest" ] && [ -z "${version_info[1]}" ]; then
version=$(latest_command "$plugin_name")
else
# if branch handles ref: || path: || normal versions
version="${versions[$item]}"
fi
version="$(resolve_version_spec "${versions[$item]}")"
# check_if_version_exists should probably handle if either param is empty string
if [ -z "$version" ]; then
@ -79,6 +71,22 @@ version_command() {
fi
}
resolve_version_spec() {
local version_spec=$1
IFS=':' read -r -a version_info <<<"$version_spec"
if [ "${version_info[0]}" = "latest" ] && [ -n "${version_info[1]}" ]; then
version=$(latest_command "$plugin_name" "${version_info[1]}")
elif [ "${version_info[0]}" = "latest" ] && [ -z "${version_info[1]}" ]; then
version=$(latest_command "$plugin_name")
else
# if branch handles ref: || path: || normal versions
version="$version_spec"
fi
printf "%s\n" "$version"
}
list_all_command() {
local plugin_name=$1
local query=$2

View File

@ -736,7 +736,8 @@ select_version() {
version_and_path=$(find_versions "$plugin_name" "$search_path")
IFS='|' read -r version_string _path <<<"$version_and_path"
IFS=' ' read -r -a usable_plugin_versions <<<"$version_string"
for plugin_version in "${usable_plugin_versions[@]}"; do
for version_spec in "${usable_plugin_versions[@]}"; do
plugin_version="$(resolve_version_spec "$version_spec")"
for plugin_and_version in "${shim_versions[@]}"; do
local plugin_shim_name
local plugin_shim_version

View File

@ -47,6 +47,16 @@ teardown() {
[ "$output" = "$expected" ]
}
@test "current should not error on version specifications like 'latest:'" {
cd "$PROJECT_DIR"
echo "dummy 1.2.0 latest:1.1" >>"$PROJECT_DIR/.tool-versions"
expected="dummy 1.2.0 latest:1.1 $PROJECT_DIR/.tool-versions"
run asdf current "dummy"
[ "$status" -eq 0 ]
[ "$output" = "$expected" ]
}
@test "current should derive from the legacy file if enabled" {
cd "$PROJECT_DIR"
echo 'legacy_version_file = yes' >"$HOME/.asdfrc"

View File

@ -45,6 +45,14 @@ teardown() {
[ "$(cat "$ASDF_DIR/installs/dummy/1.2.0/version")" = "1.2.0" ]
}
@test "install_command installs the 'latest:' version in .tool-versions" {
cd "$PROJECT_DIR"
echo -n 'dummy latest:1.1' >".tool-versions"
run asdf install dummy
[ "$status" -eq 0 ]
[ "$(cat "$ASDF_DIR/installs/dummy/1.1.0/version")" = "1.1.0" ]
}
@test "install_command set ASDF_CONCURRENCY" {
run asdf install dummy 1.0.0
[ "$status" -eq 0 ]

View File

@ -141,6 +141,19 @@ teardown() {
echo "$output" | grep -q "This is Dummy 3.0! hello world" 2>/dev/null
}
@test "shim exec should respect 'latest:' in .tool-versions" {
run asdf install dummy 1.0.0
run asdf install dummy 1.1.0
run asdf install dummy 2.0.0
echo "dummy latest:1.1" >"$PROJECT_DIR/.tool-versions"
run "$ASDF_DIR/shims/dummy" world hello
[ "$status" -eq 0 ]
echo "$output" | grep -q "This is Dummy 1.1.0! hello world" 2>/dev/null
}
@test "shim exec should only use the first version found for a plugin" {
run asdf install dummy 3.0

View File

@ -4,6 +4,8 @@ bats_require_minimum_version 1.7.0
# shellcheck source=lib/utils.bash
. "$(dirname "$BATS_TEST_DIRNAME")"/lib/utils.bash
# shellcheck source=lib/functions/versions.bash
. "$(dirname "$BATS_TEST_DIRNAME")"/lib/functions/versions.bash
setup_asdf_dir() {
if [ "$BATS_TEST_NAME" = 'test_shim_exec_should_use_path_executable_when_specified_version_path-3a-3cpath-3e' ]; then