| @ -0,0 +1,39 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| setup() { | |||
| mkdir -p "${RBENV_TEST_DIR}/myproject" | |||
| cd "${RBENV_TEST_DIR}/myproject" | |||
| } | |||
| @test "fails without arguments" { | |||
| run rbenv-version-file-read | |||
| assert_failure "" | |||
| } | |||
| @test "fails for invalid file" { | |||
| run rbenv-version-file-read "non-existent" | |||
| assert_failure "" | |||
| } | |||
| @test "reads simple version file" { | |||
| cat > my-version <<<"1.9.3" | |||
| run rbenv-version-file-read my-version | |||
| assert_success "1.9.3" | |||
| } | |||
| @test "reads only the first word from file" { | |||
| cat > my-version <<<"1.9.3-p194@tag 1.8.7 hi" | |||
| run rbenv-version-file-read my-version | |||
| assert_success "1.9.3-p194@tag" | |||
| } | |||
| @test "loads only the first line in file" { | |||
| cat > my-version <<IN | |||
| 1.8.7 one | |||
| 1.9.3 two | |||
| IN | |||
| run rbenv-version-file-read my-version | |||
| assert_success "1.8.7" | |||
| } | |||
| @ -0,0 +1,30 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| setup() { | |||
| mkdir -p "$RBENV_TEST_DIR" | |||
| cd "$RBENV_TEST_DIR" | |||
| } | |||
| @test "invocation without 2 arguments prints usage" { | |||
| run rbenv-version-file-write | |||
| assert_failure "Usage: rbenv version-file-write <file> <version>" | |||
| run rbenv-version-file-write "one" "" | |||
| assert_failure | |||
| } | |||
| @test "setting nonexistent version fails" { | |||
| assert [ ! -e ".ruby-version" ] | |||
| run rbenv-version-file-write ".ruby-version" "1.8.7" | |||
| assert_failure "rbenv: version \`1.8.7' not installed" | |||
| assert [ ! -e ".ruby-version" ] | |||
| } | |||
| @test "writes value to arbitrary file" { | |||
| mkdir -p "${RBENV_ROOT}/versions/1.8.7" | |||
| assert [ ! -e "my-version" ] | |||
| run rbenv-version-file-write "${PWD}/my-version" "1.8.7" | |||
| assert_success "" | |||
| assert [ "$(cat my-version)" = "1.8.7" ] | |||
| } | |||
| @ -0,0 +1,99 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| setup() { | |||
| mkdir -p "$RBENV_TEST_DIR" | |||
| cd "$RBENV_TEST_DIR" | |||
| } | |||
| create_file() { | |||
| mkdir -p "$(dirname "$1")" | |||
| touch "$1" | |||
| } | |||
| @test "prints global file if no version files exist" { | |||
| assert [ ! -e "${RBENV_ROOT}/version" ] | |||
| assert [ ! -e ".ruby-version" ] | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_ROOT}/version" | |||
| } | |||
| @test "detects 'global' file" { | |||
| create_file "${RBENV_ROOT}/global" | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_ROOT}/global" | |||
| } | |||
| @test "detects 'default' file" { | |||
| create_file "${RBENV_ROOT}/default" | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_ROOT}/default" | |||
| } | |||
| @test "'version' has precedence over 'global' and 'default'" { | |||
| create_file "${RBENV_ROOT}/version" | |||
| create_file "${RBENV_ROOT}/global" | |||
| create_file "${RBENV_ROOT}/default" | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_ROOT}/version" | |||
| } | |||
| @test "in current directory" { | |||
| create_file ".ruby-version" | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_TEST_DIR}/.ruby-version" | |||
| } | |||
| @test "legacy file in current directory" { | |||
| create_file ".rbenv-version" | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_TEST_DIR}/.rbenv-version" | |||
| } | |||
| @test ".ruby-version has precedence over legacy file" { | |||
| create_file ".ruby-version" | |||
| create_file ".rbenv-version" | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_TEST_DIR}/.ruby-version" | |||
| } | |||
| @test "in parent directory" { | |||
| create_file ".ruby-version" | |||
| mkdir -p project | |||
| cd project | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_TEST_DIR}/.ruby-version" | |||
| } | |||
| @test "topmost file has precedence" { | |||
| create_file ".ruby-version" | |||
| create_file "project/.ruby-version" | |||
| cd project | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_TEST_DIR}/project/.ruby-version" | |||
| } | |||
| @test "legacy file has precedence if higher" { | |||
| create_file ".ruby-version" | |||
| create_file "project/.rbenv-version" | |||
| cd project | |||
| run rbenv-version-file | |||
| assert_success "${RBENV_TEST_DIR}/project/.rbenv-version" | |||
| } | |||
| @test "RBENV_DIR has precedence over PWD" { | |||
| create_file "widget/.ruby-version" | |||
| create_file "project/.ruby-version" | |||
| cd project | |||
| RBENV_DIR="${RBENV_TEST_DIR}/widget" run rbenv-version-file | |||
| assert_success "${RBENV_TEST_DIR}/widget/.ruby-version" | |||
| } | |||
| @test "PWD is searched if RBENV_DIR yields no results" { | |||
| mkdir -p "widget/blank" | |||
| create_file "project/.ruby-version" | |||
| cd project | |||
| RBENV_DIR="${RBENV_TEST_DIR}/widget/blank" run rbenv-version-file | |||
| assert_success "${RBENV_TEST_DIR}/project/.ruby-version" | |||
| } | |||
| @ -0,0 +1,65 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| create_version() { | |||
| mkdir -p "${RBENV_ROOT}/versions/$1" | |||
| } | |||
| setup() { | |||
| mkdir -p "$RBENV_TEST_DIR" | |||
| cd "$RBENV_TEST_DIR" | |||
| } | |||
| @test "no version selected" { | |||
| assert [ ! -d "${RBENV_ROOT}/versions" ] | |||
| run rbenv-version-name | |||
| assert_success "system" | |||
| } | |||
| @test "system version is not checked for existance" { | |||
| RBENV_VERSION=system run rbenv-version-name | |||
| assert_success "system" | |||
| } | |||
| @test "RBENV_VERSION has precedence over local" { | |||
| create_version "1.8.7" | |||
| create_version "1.9.3" | |||
| cat > ".ruby-version" <<<"1.8.7" | |||
| run rbenv-version-name | |||
| assert_success "1.8.7" | |||
| RBENV_VERSION=1.9.3 run rbenv-version-name | |||
| assert_success "1.9.3" | |||
| } | |||
| @test "local file has precedence over global" { | |||
| create_version "1.8.7" | |||
| create_version "1.9.3" | |||
| cat > "${RBENV_ROOT}/version" <<<"1.8.7" | |||
| run rbenv-version-name | |||
| assert_success "1.8.7" | |||
| cat > ".ruby-version" <<<"1.9.3" | |||
| run rbenv-version-name | |||
| assert_success "1.9.3" | |||
| } | |||
| @test "missing version" { | |||
| RBENV_VERSION=1.2 run rbenv-version-name | |||
| assert_failure "rbenv: version \`1.2' is not installed" | |||
| } | |||
| @test "version with prefix in name" { | |||
| create_version "1.8.7" | |||
| cat > ".ruby-version" <<<"ruby-1.8.7" | |||
| run rbenv-version-name | |||
| assert_success | |||
| assert_output <<OUT | |||
| warning: ignoring extraneous \`ruby-' prefix in version \`ruby-1.8.7' | |||
| (set by ${PWD}/.ruby-version) | |||
| 1.8.7 | |||
| OUT | |||
| } | |||
| @ -0,0 +1,38 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| setup() { | |||
| mkdir -p "$RBENV_TEST_DIR" | |||
| cd "$RBENV_TEST_DIR" | |||
| } | |||
| @test "reports global file even if it doesn't exist" { | |||
| assert [ ! -e "${RBENV_ROOT}/version" ] | |||
| run rbenv-version-origin | |||
| assert_success "${RBENV_ROOT}/version" | |||
| } | |||
| @test "detects global file" { | |||
| mkdir -p "$RBENV_ROOT" | |||
| touch "${RBENV_ROOT}/version" | |||
| run rbenv-version-origin | |||
| assert_success "${RBENV_ROOT}/version" | |||
| } | |||
| @test "detects RBENV_VERSION" { | |||
| RBENV_VERSION=1 run rbenv-version-origin | |||
| assert_success "RBENV_VERSION environment variable" | |||
| } | |||
| @test "detects local file" { | |||
| touch .ruby-version | |||
| run rbenv-version-origin | |||
| assert_success "${PWD}/.ruby-version" | |||
| } | |||
| @test "detects alternate version file" { | |||
| touch .rbenv-version | |||
| run rbenv-version-origin | |||
| assert_success "${PWD}/.rbenv-version" | |||
| } | |||
| @ -0,0 +1,38 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| create_version() { | |||
| mkdir -p "${RBENV_ROOT}/versions/$1" | |||
| } | |||
| setup() { | |||
| mkdir -p "$RBENV_TEST_DIR" | |||
| cd "$RBENV_TEST_DIR" | |||
| } | |||
| @test "no version selected" { | |||
| assert [ ! -d "${RBENV_ROOT}/versions" ] | |||
| run rbenv-version | |||
| assert_success "system (set by ${RBENV_ROOT}/version)" | |||
| } | |||
| @test "set by RBENV_VERSION" { | |||
| create_version "1.9.3" | |||
| RBENV_VERSION=1.9.3 run rbenv-version | |||
| assert_success "1.9.3 (set by RBENV_VERSION environment variable)" | |||
| } | |||
| @test "set by local file" { | |||
| create_version "1.9.3" | |||
| cat > ".ruby-version" <<<"1.9.3" | |||
| run rbenv-version | |||
| assert_success "1.9.3 (set by ${PWD}/.ruby-version)" | |||
| } | |||
| @test "set by global file" { | |||
| create_version "1.9.3" | |||
| cat > "${RBENV_ROOT}/version" <<<"1.9.3" | |||
| run rbenv-version | |||
| assert_success "1.9.3 (set by ${RBENV_ROOT}/version)" | |||
| } | |||
| @ -0,0 +1,100 @@ | |||
| #!/usr/bin/env bats | |||
| load test_helper | |||
| create_version() { | |||
| mkdir -p "${RBENV_ROOT}/versions/$1" | |||
| } | |||
| @test "no versions installed" { | |||
| assert [ ! -d "${RBENV_ROOT}/versions" ] | |||
| run rbenv-versions | |||
| assert_success "* system (set by ${RBENV_ROOT}/version)" | |||
| } | |||
| @test "bare output no versions installed" { | |||
| assert [ ! -d "${RBENV_ROOT}/versions" ] | |||
| run rbenv-versions --bare | |||
| assert_success "" | |||
| } | |||
| @test "single version installed" { | |||
| create_version "1.9" | |||
| run rbenv-versions | |||
| assert_success | |||
| assert_output <<OUT | |||
| * system (set by ${RBENV_ROOT}/version) | |||
| 1.9 | |||
| OUT | |||
| } | |||
| @test "single version bare" { | |||
| create_version "1.9" | |||
| run rbenv-versions --bare | |||
| assert_success "1.9" | |||
| } | |||
| @test "multiple versions" { | |||
| create_version "1.8.7" | |||
| create_version "1.9.3" | |||
| create_version "2.0.0" | |||
| run rbenv-versions | |||
| assert_success | |||
| assert_output <<OUT | |||
| * system (set by ${RBENV_ROOT}/version) | |||
| 1.8.7 | |||
| 1.9.3 | |||
| 2.0.0 | |||
| OUT | |||
| } | |||
| @test "indicates current version" { | |||
| create_version "1.9.3" | |||
| create_version "2.0.0" | |||
| RBENV_VERSION=1.9.3 run rbenv-versions | |||
| assert_success | |||
| assert_output <<OUT | |||
| system | |||
| * 1.9.3 (set by RBENV_VERSION environment variable) | |||
| 2.0.0 | |||
| OUT | |||
| } | |||
| @test "bare doesn't indicate current version" { | |||
| create_version "1.9.3" | |||
| create_version "2.0.0" | |||
| RBENV_VERSION=1.9.3 run rbenv-versions --bare | |||
| assert_success | |||
| assert_output <<OUT | |||
| 1.9.3 | |||
| 2.0.0 | |||
| OUT | |||
| } | |||
| @test "globally selected version" { | |||
| create_version "1.9.3" | |||
| create_version "2.0.0" | |||
| cat > "${RBENV_ROOT}/version" <<<"1.9.3" | |||
| run rbenv-versions | |||
| assert_success | |||
| assert_output <<OUT | |||
| system | |||
| * 1.9.3 (set by ${RBENV_ROOT}/version) | |||
| 2.0.0 | |||
| OUT | |||
| } | |||
| @test "per-project version" { | |||
| create_version "1.9.3" | |||
| create_version "2.0.0" | |||
| mkdir -p "$RBENV_TEST_DIR" | |||
| cd "$RBENV_TEST_DIR" | |||
| cat > ".ruby-version" <<<"1.9.3" | |||
| run rbenv-versions | |||
| assert_success | |||
| assert_output <<OUT | |||
| system | |||
| * 1.9.3 (set by ${RBENV_TEST_DIR}/.ruby-version) | |||
| 2.0.0 | |||
| OUT | |||
| } | |||