#!/usr/bin/env bats load test_helper NUM_DEFINITIONS="$(find "$BATS_TEST_DIRNAME"/../share/python-build -maxdepth 1 -type f | wc -l)" @test "list built-in definitions" { run python-build --definitions assert_success assert_output_contains "2.7.8" assert_output_contains "jython-2.5.3" assert [ "${#lines[*]}" -eq "$NUM_DEFINITIONS" ] } @test "custom PYTHON_BUILD_ROOT: nonexistent" { export PYTHON_BUILD_ROOT="$TMP" assert [ ! -e "${PYTHON_BUILD_ROOT}/share/python-build" ] run python-build --definitions assert_success "" } @test "custom PYTHON_BUILD_ROOT: single definition" { export PYTHON_BUILD_ROOT="$TMP" mkdir -p "${PYTHON_BUILD_ROOT}/share/python-build" touch "${PYTHON_BUILD_ROOT}/share/python-build/2.7.8-test" run python-build --definitions assert_success "2.7.8-test" } @test "one path via PYTHON_BUILD_DEFINITIONS" { export PYTHON_BUILD_DEFINITIONS="${TMP}/definitions" mkdir -p "$PYTHON_BUILD_DEFINITIONS" touch "${PYTHON_BUILD_DEFINITIONS}/2.7.8-test" run python-build --definitions assert_success assert_output_contains "2.7.8-test" assert [ "${#lines[*]}" -eq "$((NUM_DEFINITIONS + 1))" ] } @test "multiple paths via PYTHON_BUILD_DEFINITIONS" { export PYTHON_BUILD_DEFINITIONS="${TMP}/definitions:${TMP}/other" mkdir -p "${TMP}/definitions" touch "${TMP}/definitions/2.7.8-test" mkdir -p "${TMP}/other" touch "${TMP}/other/3.4.2-test" run python-build --definitions assert_success assert_output_contains "2.7.8-test" assert_output_contains "3.4.2-test" assert [ "${#lines[*]}" -eq "$((NUM_DEFINITIONS + 2))" ] } @test "installing definition from PYTHON_BUILD_DEFINITIONS by priority" { export PYTHON_BUILD_DEFINITIONS="${TMP}/definitions:${TMP}/other" mkdir -p "${TMP}/definitions" echo true > "${TMP}/definitions/2.7.8-test" mkdir -p "${TMP}/other" echo false > "${TMP}/other/2.7.8-test" run bin/python-build "2.7.8-test" "${TMP}/install" assert_success "" } @test "installing nonexistent definition" { run python-build "nonexistent" "${TMP}/install" assert [ "$status" -eq 2 ] assert_output "python-build: definition not found: nonexistent" } @test "sorting Python versions" { export PYTHON_BUILD_ROOT="$TMP" mkdir -p "${PYTHON_BUILD_ROOT}/share/python-build" expected="2.7-dev 2.7 2.7.1 2.7.2 2.7.3 3.4.0 3.4-dev 3.4.1 3.4.2 jython-dev jython-2.5.0 jython-2.5-dev jython-2.5.1 jython-2.5.2 jython-2.5.3 jython-2.5.4-rc1 jython-2.7-beta1 jython-2.7-beta2 jython-2.7-beta3" for ver in "$expected"; do touch "${PYTHON_BUILD_ROOT}/share/python-build/$ver" done run python-build --definitions assert_success "$expected" } @test "removing duplicate Python versions" { export PYTHON_BUILD_ROOT="$TMP" export PYTHON_BUILD_DEFINITIONS="${PYTHON_BUILD_ROOT}/share/python-build" mkdir -p "$PYTHON_BUILD_DEFINITIONS" touch "${PYTHON_BUILD_DEFINITIONS}/2.7.8" touch "${PYTHON_BUILD_DEFINITIONS}/3.4.2" run python-build --definitions assert_success assert_output <