From 711ad991043a1980fa264098f29e78f2ecafd610 Mon Sep 17 00:00:00 2001 From: Trevor Brown Date: Fri, 27 May 2022 07:50:04 -0400 Subject: [PATCH] fix: always use ASDF_DEFAULT_TOOL_VERSIONS_FILENAME for filename when present (#1238) * fix: always use ASDF_DEFAULT_TOOL_VERSIONS_FILENAME for filename when present * fix: correct version command unit tests for ASDF_DEFAULT_TOOL_VERSIONS_FILENAME Fixes #1082 --- lib/functions/versions.bash | 8 ++++++-- lib/utils.bash | 12 +++++++++--- test/version_commands.bats | 28 ++++++++++++++++++++++++---- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/lib/functions/versions.bash b/lib/functions/versions.bash index 394d49592..4e27ce834 100644 --- a/lib/functions/versions.bash +++ b/lib/functions/versions.bash @@ -14,13 +14,17 @@ version_command() { shift 2 local versions=("$@") + local file_name local file + + file_name="$(version_file_name)" + if [ "$cmd" = "global" ]; then - file=${ASDF_DEFAULT_TOOL_VERSIONS_FILENAME:-$HOME/.tool-versions} + file="$HOME/$file_name" elif [ "$cmd" = "local-tree" ]; then file=$(find_tool_versions) else # cmd = local - file="$(pwd)/.tool-versions" + file="$(pwd)/$file_name" fi if [ -L "$file" ]; then diff --git a/lib/utils.bash b/lib/utils.bash index 84f2a2c44..dea430b97 100644 --- a/lib/utils.bash +++ b/lib/utils.bash @@ -156,10 +156,12 @@ get_version_in_dir() { local legacy_filenames=$3 local asdf_version - asdf_version=$(parse_asdf_version_file "$search_path/.tool-versions" "$plugin_name") + + file_name=$(version_file_name) + asdf_version=$(parse_asdf_version_file "$search_path/$file_name" "$plugin_name") if [ -n "$asdf_version" ]; then - printf "%s\\n" "$asdf_version|$search_path/.tool-versions" + printf "%s\\n" "$asdf_version|$search_path/$file_name" return 0 fi @@ -174,6 +176,10 @@ get_version_in_dir() { done } +version_file_name() { + printf "%s" "${ASDF_DEFAULT_TOOL_VERSIONS_FILENAME:-.tool-versions}" +} + find_versions() { local plugin_name=$1 local search_path=$2 @@ -431,7 +437,7 @@ get_plugin_source_url() { } find_tool_versions() { - find_file_upwards ".tool-versions" + find_file_upwards "$(version_file_name)" } find_file_upwards() { diff --git a/test/version_commands.bats b/test/version_commands.bats index eadf8155f..815a58119 100644 --- a/test/version_commands.bats +++ b/test/version_commands.bats @@ -249,21 +249,41 @@ teardown() { [ "$(cat $HOME/.tool-versions)" = "dummy path:$PROJECT_DIR/local" ] } +@test "local should write to ASDF_DEFAULT_TOOL_VERSIONS_FILENAME" { + export ASDF_DEFAULT_TOOL_VERSIONS_FILENAME="local-tool-versions" + run asdf local "dummy" "1.1.0" + [ "$status" -eq 0 ] + [ "$(cat $ASDF_DEFAULT_TOOL_VERSIONS_FILENAME)" = "dummy 1.1.0" ] + [ "$(cat .tool-versions)" = "" ] + unset ASDF_DEFAULT_TOOL_VERSIONS_FILENAME +} + +@test "local should overwrite contents of ASDF_DEFAULT_TOOL_VERSIONS_FILENAME if set" { + export ASDF_DEFAULT_TOOL_VERSIONS_FILENAME="local-tool-versions" + echo 'dummy 1.0.0' >> "$ASDF_DEFAULT_TOOL_VERSIONS_FILENAME" + run asdf local "dummy" "1.1.0" + [ "$status" -eq 0 ] + [ "$(cat $ASDF_DEFAULT_TOOL_VERSIONS_FILENAME)" = "dummy 1.1.0" ] + [ "$(cat .tool-versions)" = "" ] + unset ASDF_DEFAULT_TOOL_VERSIONS_FILENAME +} + + @test "global should write to ASDF_DEFAULT_TOOL_VERSIONS_FILENAME" { - export ASDF_DEFAULT_TOOL_VERSIONS_FILENAME="$PROJECT_DIR/global-tool-versions" + export ASDF_DEFAULT_TOOL_VERSIONS_FILENAME="global-tool-versions" run asdf global "dummy" "1.1.0" [ "$status" -eq 0 ] - [ "$(cat $ASDF_DEFAULT_TOOL_VERSIONS_FILENAME)" = "dummy 1.1.0" ] + [ "$(cat $HOME/$ASDF_DEFAULT_TOOL_VERSIONS_FILENAME)" = "dummy 1.1.0" ] [ "$(cat $HOME/.tool-versions)" = "" ] unset ASDF_DEFAULT_TOOL_VERSIONS_FILENAME } @test "global should overwrite contents of ASDF_DEFAULT_TOOL_VERSIONS_FILENAME if set" { - export ASDF_DEFAULT_TOOL_VERSIONS_FILENAME="$PROJECT_DIR/global-tool-versions" + export ASDF_DEFAULT_TOOL_VERSIONS_FILENAME="global-tool-versions" echo 'dummy 1.0.0' >> "$ASDF_DEFAULT_TOOL_VERSIONS_FILENAME" run asdf global "dummy" "1.1.0" [ "$status" -eq 0 ] - [ "$(cat $ASDF_DEFAULT_TOOL_VERSIONS_FILENAME)" = "dummy 1.1.0" ] + [ "$(cat $HOME/$ASDF_DEFAULT_TOOL_VERSIONS_FILENAME)" = "dummy 1.1.0" ] [ "$(cat $HOME/.tool-versions)" = "" ] unset ASDF_DEFAULT_TOOL_VERSIONS_FILENAME }