#!/usr/bin/env bash
# shellcheck disable=SC2088
set -euo pipefail

orig_path="$PATH"

rtx trust
rtx trust ../.e2e.rtx.toml
rtx trust 18/.e2e.rtx.toml

# shellcheck disable=SC1090
eval "$(rtx activate bash --status)" && _rtx_hook

assert() {
	local actual="$1"
	local expected="$2"
	if [[ "$actual" != "$expected" ]]; then
		echo "actual: $actual"
		echo "expected: $expected"
		exit 1
	fi
}

assert_path() {
  local expected="${1//$ROOT/\$ROOT}"
  local actual="${PATH/%$orig_path/}"
  actual="${actual/%:/}"
  actual="${actual//$ROOT/\$ROOT}"
  if [[ "$actual" != "$expected" ]]; then
    echo "Invalid PATH:  $actual"
    echo "Expected PATH: $expected"
    exit 1
  fi
}

test "$(node -v)" = "v20.0.0"
assert_path "/root:\$ROOT/e2e/cwd:\$ROOT/e2e/.rtx/installs/node/20.0.0/bin:\$ROOT/e2e/.rtx/installs/tiny/3.1.0/bin:\$ROOT/e2e/.rtx/installs/shellcheck/0.9.0/bin:\$ROOT/e2e/.rtx/installs/shfmt/3.6.0/bin"
assert "$FOO" "cd"

cd 18 && _rtx_hook
test "$(node -v)" = "v18.0.0"
assert_path "/root:\$ROOT/e2e/cwd:\$ROOT/e2e/.rtx/installs/node/18.0.0/bin:\$ROOT/e2e/.rtx/installs/tiny/3.1.0/bin:\$ROOT/e2e/.rtx/installs/shellcheck/0.9.0/bin:$ROOT/e2e/.rtx/installs/shfmt/3.6.0/bin"
assert "$FOO" "18"

cd .. && _rtx_hook
test "$(node -v)" = "v20.0.0"
assert_path "/root:\$ROOT/e2e/cwd:\$ROOT/e2e/.rtx/installs/node/20.0.0/bin:\$ROOT/e2e/.rtx/installs/tiny/3.1.0/bin:\$ROOT/e2e/.rtx/installs/shellcheck/0.9.0/bin:\$ROOT/e2e/.rtx/installs/shfmt/3.6.0/bin"

rtx shell node@18.0.0 && _rtx_hook
test "$(node -v)" = "v18.0.0"

rtx deactivate
assert_path ""
