| @ -0,0 +1,27 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| @test "commands" { | |||
| run rbenv-commands | |||
| assert_success | |||
| assert_line "init" | |||
| assert_line "rehash" | |||
| assert_line "shell" | |||
| refute_line "sh-shell" | |||
| assert_line "echo" | |||
| } | |||
| @test "commands --sh" { | |||
| run rbenv-commands --sh | |||
| assert_success | |||
| refute_line "init" | |||
| assert_line "shell" | |||
| } | |||
| @test "commands --no-sh" { | |||
| run rbenv-commands --no-sh | |||
| assert_success | |||
| assert_line "init" | |||
| refute_line "shell" | |||
| } | |||
| @ -0,0 +1,31 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| @test "default" { | |||
| run rbenv global | |||
| assert_success | |||
| assert_output "system" | |||
| } | |||
| @test "read RBENV_ROOT/version" { | |||
| mkdir -p "$RBENV_ROOT" | |||
| echo "1.2.3" > "$RBENV_ROOT/version" | |||
| run rbenv-global | |||
| assert_success | |||
| assert_output "1.2.3" | |||
| } | |||
| @test "set RBENV_ROOT/version" { | |||
| mkdir -p "$RBENV_ROOT/versions/1.2.3" | |||
| run rbenv-global "1.2.3" | |||
| assert_success | |||
| run rbenv global | |||
| assert_success "1.2.3" | |||
| } | |||
| @test "fail setting invalid RBENV_ROOT/version" { | |||
| mkdir -p "$RBENV_ROOT" | |||
| run rbenv-global "1.2.3" | |||
| assert_failure "rbenv: version \`1.2.3' not installed" | |||
| } | |||
| @ -0,0 +1,2 @@ | |||
| #!/usr/bin/env bash | |||
| eval "echo \$$1" | |||
| @ -0,0 +1,53 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| setup() { | |||
| mkdir -p "${RBENV_TEST_DIR}/myproject" | |||
| cd "${RBENV_TEST_DIR}/myproject" | |||
| } | |||
| @test "no version" { | |||
| assert [ ! -e "${PWD}/.ruby-version" ] | |||
| run rbenv-local | |||
| assert_failure "rbenv: no local version configured for this directory" | |||
| } | |||
| @test "local version" { | |||
| echo "1.2.3" > .ruby-version | |||
| run rbenv-local | |||
| assert_success "1.2.3" | |||
| } | |||
| @test "ignores version in parent directory" { | |||
| echo "1.2.3" > .ruby-version | |||
| mkdir -p "subdir" && cd "subdir" | |||
| run rbenv-local | |||
| assert_failure | |||
| } | |||
| @test "ignores RBENV_DIR" { | |||
| echo "1.2.3" > .ruby-version | |||
| mkdir -p "$HOME" | |||
| echo "2.0-home" > "${HOME}/.ruby-version" | |||
| RBENV_DIR="$HOME" run rbenv-local | |||
| assert_success "1.2.3" | |||
| } | |||
| @test "sets local version" { | |||
| mkdir -p "${RBENV_ROOT}/versions/1.2.3" | |||
| run rbenv-local 1.2.3 | |||
| assert_success "" | |||
| assert [ "$(cat .ruby-version)" = "1.2.3" ] | |||
| } | |||
| @test "changes local version" { | |||
| echo "1.0-pre" > .ruby-version | |||
| mkdir -p "${RBENV_ROOT}/versions/1.2.3" | |||
| run rbenv-local | |||
| assert_success "1.0-pre" | |||
| run rbenv-local 1.2.3 | |||
| assert_success "" | |||
| run rbenv-local | |||
| assert_success "1.2.3" | |||
| } | |||
| @ -0,0 +1,25 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| @test "prefix" { | |||
| mkdir -p "${RBENV_TEST_DIR}/myproject" | |||
| cd "${RBENV_TEST_DIR}/myproject" | |||
| echo "1.2.3" > .ruby-version | |||
| mkdir -p "${RBENV_ROOT}/versions/1.2.3" | |||
| run rbenv-prefix | |||
| assert_success "${RBENV_ROOT}/versions/1.2.3" | |||
| } | |||
| @test "prefix for invalid version" { | |||
| RBENV_VERSION="1.2.3" run rbenv-prefix | |||
| assert_failure "rbenv: version \`1.2.3' not installed" | |||
| } | |||
| @test "prefix for system" { | |||
| mkdir -p "${RBENV_TEST_DIR}/bin" | |||
| touch "${RBENV_TEST_DIR}/bin/ruby" | |||
| chmod +x "${RBENV_TEST_DIR}/bin/ruby" | |||
| RBENV_VERSION="system" run rbenv-prefix | |||
| assert_success "$RBENV_TEST_DIR" | |||
| } | |||
| @ -0,0 +1,47 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| @test "blank invocation" { | |||
| run rbenv | |||
| assert_success | |||
| assert [ "${lines[0]}" = "rbenv 0.4.0" ] | |||
| } | |||
| @test "invalid command" { | |||
| run rbenv does-not-exist | |||
| assert_failure | |||
| assert_output "rbenv: no such command \`does-not-exist'" | |||
| } | |||
| @test "default RBENV_ROOT" { | |||
| RBENV_ROOT="" HOME=/home/mislav run rbenv root | |||
| assert_success | |||
| assert_output "/home/mislav/.rbenv" | |||
| } | |||
| @test "inherited RBENV_ROOT" { | |||
| RBENV_ROOT=/opt/rbenv run rbenv root | |||
| assert_success | |||
| assert_output "/opt/rbenv" | |||
| } | |||
| @test "default RBENV_DIR" { | |||
| run rbenv echo RBENV_DIR | |||
| assert_output "$(pwd)" | |||
| } | |||
| @test "inherited RBENV_DIR" { | |||
| dir="${BATS_TMPDIR}/myproject" | |||
| mkdir -p "$dir" | |||
| RBENV_DIR="$dir" run rbenv echo RBENV_DIR | |||
| assert_output "$dir" | |||
| } | |||
| @test "invalid RBENV_DIR" { | |||
| dir="${BATS_TMPDIR}/does-not-exist" | |||
| assert [ ! -d "$dir" ] | |||
| RBENV_DIR="$dir" run rbenv echo RBENV_DIR | |||
| assert_failure | |||
| assert_output "rbenv: cannot change working directory to \`$dir'" | |||
| } | |||
| @ -1,33 +1,27 @@ | |||
| #!/usr/bin/env bats | |||
| export PATH="${BATS_TEST_DIRNAME}/../libexec:$PATH" | |||
| RBENV_TEST_ROOT="${BATS_TMPDIR}/rbenv" | |||
| export RBENV_ROOT="$RBENV_TEST_ROOT" | |||
| teardown() { | |||
| rm -rf "$RBENV_TEST_ROOT" | |||
| } | |||
| load test_helper | |||
| @test "empty rehash" { | |||
| assert [ ! -d "${RBENV_ROOT}/shims" ] | |||
| run rbenv-rehash | |||
| [ "$status" -eq 0 ] | |||
| [ -d "${RBENV_TEST_ROOT}/shims" ] | |||
| rmdir "${RBENV_TEST_ROOT}/shims" | |||
| assert_success | |||
| assert [ -d "${RBENV_ROOT}/shims" ] | |||
| rmdir "${RBENV_ROOT}/shims" | |||
| } | |||
| @test "shims directory not writable" { | |||
| mkdir -p "${RBENV_TEST_ROOT}/shims" | |||
| chmod -w "${RBENV_TEST_ROOT}/shims" | |||
| @test "non-writable shims directory" { | |||
| mkdir -p "${RBENV_ROOT}/shims" | |||
| chmod -w "${RBENV_ROOT}/shims" | |||
| run rbenv-rehash | |||
| [ "$status" -eq 1 ] | |||
| [ "$output" = "rbenv: cannot rehash: ${RBENV_TEST_ROOT}/shims isn't writable" ] | |||
| assert_failure | |||
| assert_output "rbenv: cannot rehash: ${RBENV_ROOT}/shims isn't writable" | |||
| } | |||
| @test "rehash in progress" { | |||
| mkdir -p "${RBENV_TEST_ROOT}/shims" | |||
| touch "${RBENV_TEST_ROOT}/shims/.rbenv-shim" | |||
| mkdir -p "${RBENV_ROOT}/shims" | |||
| touch "${RBENV_ROOT}/shims/.rbenv-shim" | |||
| run rbenv-rehash | |||
| [ "$status" -eq 1 ] | |||
| [ "$output" = "rbenv: cannot rehash: ${RBENV_TEST_ROOT}/shims/.rbenv-shim exists" ] | |||
| assert_failure | |||
| assert_output "rbenv: cannot rehash: ${RBENV_ROOT}/shims/.rbenv-shim exists" | |||
| } | |||
| @ -0,0 +1,35 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| @test "no shell version" { | |||
| mkdir -p "${RBENV_TEST_DIR}/myproject" | |||
| cd "${RBENV_TEST_DIR}/myproject" | |||
| echo "1.2.3" > .ruby-version | |||
| RBENV_VERSION="" run rbenv-sh-shell | |||
| assert_failure "rbenv: no shell-specific version configured" | |||
| } | |||
| @test "shell version" { | |||
| RBENV_VERSION="1.2.3" run rbenv-sh-shell | |||
| assert_success 'echo "$RBENV_VERSION"' | |||
| } | |||
| @test "shell unset" { | |||
| run rbenv-sh-shell --unset | |||
| assert_success "unset RBENV_VERSION" | |||
| } | |||
| @test "shell change invalid version" { | |||
| run rbenv-sh-shell 1.2.3 | |||
| assert_failure | |||
| assert_line "rbenv: version \`1.2.3' not installed" | |||
| assert_line "return 1" | |||
| } | |||
| @test "shell change version" { | |||
| mkdir -p "${RBENV_ROOT}/versions/1.2.3" | |||
| run rbenv-sh-shell 1.2.3 | |||
| assert_success 'export RBENV_VERSION="1.2.3"' | |||
| refute_line "return 1" | |||
| } | |||
| @ -0,0 +1,29 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| @test "no shims" { | |||
| run rbenv-shims | |||
| assert_success | |||
| assert [ -z "$output" ] | |||
| } | |||
| @test "shims" { | |||
| mkdir -p "${RBENV_ROOT}/shims" | |||
| touch "${RBENV_ROOT}/shims/ruby" | |||
| touch "${RBENV_ROOT}/shims/irb" | |||
| run rbenv-shims | |||
| assert_success | |||
| assert_line "${RBENV_ROOT}/shims/ruby" | |||
| assert_line "${RBENV_ROOT}/shims/irb" | |||
| } | |||
| @test "shims --short" { | |||
| mkdir -p "${RBENV_ROOT}/shims" | |||
| touch "${RBENV_ROOT}/shims/ruby" | |||
| touch "${RBENV_ROOT}/shims/irb" | |||
| run rbenv-shims --short | |||
| assert_success | |||
| assert_line "irb" | |||
| assert_line "ruby" | |||
| } | |||
| @ -0,0 +1,62 @@ | |||
| RBENV_TEST_DIR="${BATS_TMPDIR}/rbenv" | |||
| export RBENV_ROOT="${RBENV_TEST_DIR}/root" | |||
| export HOME="${RBENV_TEST_DIR}/home" | |||
| unset RBENV_VERSION | |||
| unset RBENV_DIR | |||
| export PATH="${RBENV_TEST_DIR}/bin:$PATH" | |||
| export PATH="${BATS_TEST_DIRNAME}/../libexec:$PATH" | |||
| export PATH="${BATS_TEST_DIRNAME}/libexec:$PATH" | |||
| export PATH="${RBENV_ROOT}/shims:$PATH" | |||
| teardown() { | |||
| rm -rf "$RBENV_TEST_DIR" | |||
| } | |||
| flunk() { | |||
| echo "$@" | sed "s:${RBENV_ROOT}:\$RBENV_ROOT:" >&2 | |||
| return 1 | |||
| } | |||
| assert_success() { | |||
| if [ "$status" -ne 0 ]; then | |||
| flunk "command failed with exit status $status" | |||
| elif [ "$#" -gt 0 ]; then | |||
| assert_output "$1" | |||
| fi | |||
| } | |||
| assert_failure() { | |||
| if [ "$status" -eq 0 ]; then | |||
| flunk "expected failed exit status" | |||
| elif [ "$#" -gt 0 ]; then | |||
| assert_output "$1" | |||
| fi | |||
| } | |||
| assert_output() { | |||
| if [ "$output" != "$1" ]; then | |||
| flunk "expected: $1" || true | |||
| flunk "got: $output" | |||
| fi | |||
| } | |||
| assert_line() { | |||
| for line in "${lines[@]}"; do | |||
| if [ "$line" = "$1" ]; then return 0; fi | |||
| done | |||
| flunk "expected line \`$1'" | |||
| } | |||
| refute_line() { | |||
| for line in "${lines[@]}"; do | |||
| if [ "$line" = "$1" ]; then flunk "expected to not find line \`$line'"; fi | |||
| done | |||
| } | |||
| assert() { | |||
| if ! "$@"; then | |||
| flunk "failed: $@" | |||
| fi | |||
| } | |||