Files
TheRock/build_tools/packaging/linux/tests/setup_python_cmd_test.sh
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

202 lines
6.0 KiB
Bash
Executable File

#!/bin/bash
# Copyright Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
# Test suite for setup_python_cmd.sh
# Run with: bash build_tools/packaging/linux/tests/setup_python_cmd_test.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SETUP_SCRIPT="$SCRIPT_DIR/../setup_python_cmd.sh"
# Test counters
TESTS_RUN=0
TESTS_PASSED=0
TESTS_FAILED=0
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
# Test helper functions
assert_equals() {
local expected="$1"
local actual="$2"
local test_name="$3"
TESTS_RUN=$((TESTS_RUN + 1))
if [[ "$expected" == "$actual" ]]; then
echo -e "${GREEN}✓${NC} $test_name"
TESTS_PASSED=$((TESTS_PASSED + 1))
else
echo -e "${RED}✗${NC} $test_name"
echo " Expected: $expected"
echo " Actual: $actual"
TESTS_FAILED=$((TESTS_FAILED + 1))
fi
}
assert_contains() {
local substring="$1"
local string="$2"
local test_name="$3"
TESTS_RUN=$((TESTS_RUN + 1))
if [[ "$string" == *"$substring"* ]]; then
echo -e "${GREEN}✓${NC} $test_name"
TESTS_PASSED=$((TESTS_PASSED + 1))
else
echo -e "${RED}✗${NC} $test_name"
echo " Expected to contain: $substring"
echo " Actual: $string"
TESTS_FAILED=$((TESTS_FAILED + 1))
fi
}
# Helper: run script with --output-format github using a temp GITHUB_ENV file.
# Returns the content written to GITHUB_ENV.
run_github_format() {
local tmp_env
tmp_env=$(mktemp)
GITHUB_ENV="$tmp_env" bash "$SETUP_SCRIPT" "$@" --output-format github
local result
result=$(cat "$tmp_env")
rm -f "$tmp_env"
echo "$result"
}
# Test resolve_python_cmd logic (output format tests)
test_ubuntu_profiles() {
local output
output=$(run_github_format --os-profile ubuntu2404)
assert_equals "PYTHON_CMD=python3.12" "$output" "Ubuntu 24.04 resolves to python3.12"
output=$(run_github_format --os-profile ubuntu2204)
assert_equals "PYTHON_CMD=python3.12" "$output" "Ubuntu 22.04 resolves to python3.12"
output=$(run_github_format --os-profile ubuntu2004)
assert_equals "PYTHON_CMD=python3.12" "$output" "Ubuntu 20.04 resolves to python3.12"
}
test_debian_profiles() {
local output
output=$(run_github_format --os-profile debian12)
assert_equals "PYTHON_CMD=python3.12" "$output" "Debian 12 resolves to python3.12"
output=$(run_github_format --os-profile debian11)
assert_equals "PYTHON_CMD=python3.12" "$output" "Debian 11 resolves to python3.12"
}
test_sles_profiles() {
local output
output=$(run_github_format --os-profile sles16)
assert_equals "PYTHON_CMD=python3.13" "$output" "SLES 16 resolves to python3.13"
output=$(run_github_format --os-profile sles15)
assert_equals "PYTHON_CMD=python3.13" "$output" "SLES 15 resolves to python3.13"
}
test_rhel_profiles() {
local output
output=$(run_github_format --os-profile rhel8)
assert_equals "PYTHON_CMD=python3.12" "$output" "RHEL 8 resolves to python3.12"
output=$(run_github_format --os-profile rhel10)
assert_equals "PYTHON_CMD=python3.12" "$output" "RHEL 10 resolves to python3.12"
output=$(run_github_format --os-profile rhel9)
assert_equals "PYTHON_CMD=python3.12" "$output" "RHEL 9 resolves to python3.12"
}
test_centos_profiles() {
local output
output=$(run_github_format --os-profile centos9)
assert_equals "PYTHON_CMD=python3.12" "$output" "CentOS 9 resolves to python3.12 (default case)"
}
# Test output formats
test_json_output() {
local output=$(bash "$SETUP_SCRIPT" --os-profile ubuntu2404 --output-format json)
assert_equals '{"python_cmd": "python3.12"}' "$output" "JSON output format for Ubuntu"
output=$(bash "$SETUP_SCRIPT" --os-profile sles16 --output-format json)
assert_equals '{"python_cmd": "python3.13"}' "$output" "JSON output format for SLES"
}
test_github_output() {
local output
output=$(run_github_format --os-profile rhel10)
assert_equals "PYTHON_CMD=python3.12" "$output" "GitHub output format writes to GITHUB_ENV"
}
test_env_output() {
local output=$(bash "$SETUP_SCRIPT" --os-profile ubuntu2404 --output-format env)
assert_equals "export PYTHON_CMD=python3.12" "$output" "Env output format for Ubuntu"
output=$(bash "$SETUP_SCRIPT" --os-profile sles16 --output-format env)
assert_equals "export PYTHON_CMD=python3.13" "$output" "Env output format for SLES"
}
# Test error handling
test_missing_os_profile() {
TESTS_RUN=$((TESTS_RUN + 1))
if bash "$SETUP_SCRIPT" --output-format github 2>/dev/null; then
echo -e "${RED}✗${NC} Missing --os-profile should fail"
echo " Expected: error exit code"
echo " Actual: success"
TESTS_FAILED=$((TESTS_FAILED + 1))
else
echo -e "${GREEN}✓${NC} Missing --os-profile should fail"
TESTS_PASSED=$((TESTS_PASSED + 1))
fi
}
test_invalid_output_format() {
TESTS_RUN=$((TESTS_RUN + 1))
if bash "$SETUP_SCRIPT" --os-profile ubuntu2404 --output-format invalid 2>/dev/null; then
echo -e "${RED}✗${NC} Invalid --output-format should fail"
echo " Expected: error exit code"
echo " Actual: success"
TESTS_FAILED=$((TESTS_FAILED + 1))
else
echo -e "${GREEN}✓${NC} Invalid --output-format should fail"
TESTS_PASSED=$((TESTS_PASSED + 1))
fi
}
# Run all tests
echo "Running setup_python_cmd.sh tests..."
echo ""
test_ubuntu_profiles
test_debian_profiles
test_sles_profiles
test_rhel_profiles
test_centos_profiles
test_json_output
test_github_output
test_env_output
test_missing_os_profile
test_invalid_output_format
# Print summary
echo ""
echo "========================================"
echo "Test Summary"
echo "========================================"
echo "Tests run: $TESTS_RUN"
echo -e "Tests passed: ${GREEN}$TESTS_PASSED${NC}"
if [[ $TESTS_FAILED -gt 0 ]]; then
echo -e "Tests failed: ${RED}$TESTS_FAILED${NC}"
exit 1
else
echo -e "Tests failed: $TESTS_FAILED"
echo ""
echo -e "${GREEN}All tests passed!${NC}"
exit 0
fi