2019-01-19 19:59:27 -07:00
|
|
|
#!/usr/bin/env bats
|
2023-01-25 06:37:21 -07:00
|
|
|
# shellcheck disable=SC2164
|
2019-01-19 19:59:27 -07:00
|
|
|
|
|
|
|
load test_helpers
|
|
|
|
|
|
|
|
setup() {
|
|
|
|
setup_asdf_dir
|
|
|
|
install_dummy_plugin
|
|
|
|
|
|
|
|
PROJECT_DIR="$HOME/project"
|
|
|
|
mkdir -p "$PROJECT_DIR"
|
|
|
|
cd "$PROJECT_DIR"
|
|
|
|
|
|
|
|
# asdf lib needed to run generated shims
|
|
|
|
cp -rf "$BATS_TEST_DIRNAME"/../{bin,lib} "$ASDF_DIR/"
|
|
|
|
}
|
|
|
|
|
|
|
|
teardown() {
|
|
|
|
clean_asdf_dir
|
|
|
|
}
|
|
|
|
|
2019-01-20 01:13:20 -07:00
|
|
|
@test "asdf env without argument should display help" {
|
|
|
|
run asdf env
|
|
|
|
[ "$status" -eq 1 ]
|
|
|
|
echo "$output" | grep "usage: asdf env <command>"
|
|
|
|
}
|
|
|
|
|
2019-01-19 19:59:27 -07:00
|
|
|
@test "asdf env should execute under the environment used for a shim" {
|
2022-06-24 02:20:27 -07:00
|
|
|
echo "dummy 1.0" >"$PROJECT_DIR/.tool-versions"
|
2019-01-20 01:13:20 -07:00
|
|
|
run asdf install
|
2019-01-19 19:59:27 -07:00
|
|
|
|
2019-01-20 01:13:20 -07:00
|
|
|
run asdf env dummy which dummy
|
2019-01-19 19:59:27 -07:00
|
|
|
[ "$status" -eq 0 ]
|
|
|
|
[ "$output" = "$ASDF_DIR/installs/dummy/1.0/bin/dummy" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
@test "asdf env should execute under plugin custom environment used for a shim" {
|
2022-06-24 02:20:27 -07:00
|
|
|
echo "dummy 1.0" >"$PROJECT_DIR/.tool-versions"
|
2019-01-20 01:13:20 -07:00
|
|
|
run asdf install
|
2019-01-19 19:59:27 -07:00
|
|
|
|
2024-11-24 09:00:40 -07:00
|
|
|
echo '#!/usr/bin/env bash
|
|
|
|
export FOO=bar' >"$ASDF_DIR/plugins/dummy/bin/exec-env"
|
2019-01-19 19:59:27 -07:00
|
|
|
chmod +x "$ASDF_DIR/plugins/dummy/bin/exec-env"
|
|
|
|
|
2019-01-20 01:13:20 -07:00
|
|
|
run asdf env dummy
|
2019-01-19 19:59:27 -07:00
|
|
|
[ "$status" -eq 0 ]
|
|
|
|
echo "$output" | grep 'FOO=bar'
|
|
|
|
}
|
|
|
|
|
2024-11-24 09:00:40 -07:00
|
|
|
@test "asdf env should print error when plugin version lacks the specified executable" {
|
|
|
|
echo "dummy 1.0" >"$PROJECT_DIR/.tool-versions"
|
|
|
|
run asdf install
|
|
|
|
|
|
|
|
echo '#!/usr/bin/env bash
|
|
|
|
export FOO=bar' >"$ASDF_DIR/plugins/dummy/bin/exec-env"
|
|
|
|
chmod +x "$ASDF_DIR/plugins/dummy/bin/exec-env"
|
|
|
|
|
|
|
|
echo "dummy system" >"$PROJECT_DIR/.tool-versions"
|
|
|
|
|
|
|
|
run asdf env dummy
|
|
|
|
[ "$status" -eq 1 ]
|
|
|
|
[ "$output" = "No executable dummy found for current version. Please select a different version or install dummy manually for the current version" ]
|
|
|
|
}
|
|
|
|
|
2019-01-19 19:59:27 -07:00
|
|
|
@test "asdf env should ignore plugin custom environment on system version" {
|
2022-06-24 02:20:27 -07:00
|
|
|
echo "dummy 1.0" >"$PROJECT_DIR/.tool-versions"
|
2019-01-20 01:13:20 -07:00
|
|
|
run asdf install
|
2019-01-19 19:59:27 -07:00
|
|
|
|
2024-11-24 09:00:40 -07:00
|
|
|
echo '#!/usr/bin/env bash
|
|
|
|
export FOO=bar' >"$ASDF_DIR/plugins/dummy/bin/exec-env"
|
2019-01-19 19:59:27 -07:00
|
|
|
chmod +x "$ASDF_DIR/plugins/dummy/bin/exec-env"
|
|
|
|
|
2024-11-24 09:00:40 -07:00
|
|
|
# Create a "system" dummy executable
|
|
|
|
echo '#!/usr/bin/env bash
|
|
|
|
echo "system dummy"' >"$ASDF_BIN/dummy"
|
|
|
|
chmod +x "$ASDF_BIN/dummy"
|
|
|
|
|
2022-06-24 02:20:27 -07:00
|
|
|
echo "dummy system" >"$PROJECT_DIR/.tool-versions"
|
2019-01-19 19:59:27 -07:00
|
|
|
|
2019-01-20 01:13:20 -07:00
|
|
|
run asdf env dummy
|
2019-01-19 19:59:27 -07:00
|
|
|
[ "$status" -eq 0 ]
|
|
|
|
|
|
|
|
run grep 'FOO=bar' <<<"$output"
|
|
|
|
[ "$output" = "" ]
|
|
|
|
[ "$status" -eq 1 ]
|
|
|
|
|
2019-01-20 01:13:20 -07:00
|
|
|
run asdf env dummy which dummy
|
2024-11-24 09:00:40 -07:00
|
|
|
[ "$output" = "$ASDF_BIN/dummy" ]
|
2019-01-23 21:18:18 -07:00
|
|
|
[ "$status" -eq 0 ]
|
2024-11-24 09:00:40 -07:00
|
|
|
# Remove "system" dummy executable
|
|
|
|
rm "$ASDF_BIN/dummy"
|
2019-01-19 19:59:27 -07:00
|
|
|
}
|
2019-08-14 16:31:23 -07:00
|
|
|
|
|
|
|
@test "asdf env should set PATH correctly" {
|
2022-06-24 02:20:27 -07:00
|
|
|
echo "dummy 1.0" >"$PROJECT_DIR/.tool-versions"
|
2019-08-14 16:31:23 -07:00
|
|
|
run asdf install
|
|
|
|
|
|
|
|
run asdf env dummy
|
|
|
|
[ "$status" -eq 0 ]
|
|
|
|
|
|
|
|
# Should set path
|
|
|
|
path_line=$(echo "$output" | grep '^PATH=')
|
|
|
|
[ "$path_line" != "" ]
|
|
|
|
|
|
|
|
# Should not contain duplicate colon
|
|
|
|
run grep -q '::' <<<"$path_line"
|
|
|
|
[ "$status" -ne 0 ]
|
|
|
|
}
|