mirror of
https://github.com/awalsh128/cache-apt-pkgs-action.git
synced 2025-12-26 05:11:24 +00:00
- Refactored README.md - Added workflows for version export and management. - Removed src directory, following Go best practices - Added COMMANDS.md documentation Saving the AI semi-slop for now with broken states to get a snapshot. Too lazy to setup another chained repo.
181 lines
4.2 KiB
Bash
Executable file
181 lines
4.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
#==============================================================================
|
|
# setup_dev_test.sh
|
|
#==============================================================================
|
|
#
|
|
# DESCRIPTION:
|
|
# Test suite for setup_dev.sh script.
|
|
# Validates development environment setup, tool installation, and configuration.
|
|
#
|
|
# USAGE:
|
|
# ./scripts/tests/setup_dev_test.sh [-v|--verbose] [-s|--skip-install]
|
|
#
|
|
# OPTIONS:
|
|
# -v, --verbose Show verbose test output
|
|
# -h, --help Show this help message
|
|
# -s, --skip-install Skip actual installation tests
|
|
#
|
|
#==============================================================================
|
|
|
|
# Source the test library
|
|
source "$(dirname "$0")/test_lib.sh"
|
|
|
|
# Additional settings
|
|
SKIP_INSTALL=false
|
|
|
|
# Parse arguments (handle any unprocessed args from common parser)
|
|
while [[ -n "$1" ]]; do
|
|
arg="$(parse_common_args "$1")"
|
|
case "$arg" in
|
|
-s|--skip-install)
|
|
SKIP_INSTALL=true
|
|
shift
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
generate_help "$0"
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Initialize test environment
|
|
setup_test_env
|
|
|
|
# Get the directory containing this script
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
PROJECT_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
|
|
|
# Create a temporary directory for test files
|
|
TEMP_DIR=$(mktemp -d)
|
|
trap 'rm -rf "$TEMP_DIR"' EXIT
|
|
|
|
# Main test case function
|
|
function test_case() {
|
|
local name=$1
|
|
local cmd=$2
|
|
local expected_output=$3
|
|
local should_succeed=${4:-true}
|
|
|
|
echo -n "Testing $name... "
|
|
|
|
# Run command and capture output
|
|
local output
|
|
if [[ $should_succeed == "true" ]]; then
|
|
output=$($cmd 2>&1)
|
|
local status=$?
|
|
if [[ $status -eq 0 && $output == *"$expected_output"* ]]; then
|
|
echo -e "${GREEN}PASS${NC}"
|
|
((PASS++))
|
|
return 0
|
|
fi
|
|
else
|
|
output=$($cmd 2>&1) || true
|
|
if [[ $output == *"$expected_output"* ]]; then
|
|
echo -e "${GREEN}PASS${NC}"
|
|
((PASS++))
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
echo -e "${RED}FAIL${NC}"
|
|
echo " Expected output to contain: '$expected_output'"
|
|
echo " Got: '$output'"
|
|
((FAIL++))
|
|
return 0
|
|
}
|
|
|
|
echo "Running setup_dev.sh tests..."
|
|
echo "---------------------------"
|
|
|
|
# Section 1: Command Line Interface
|
|
print_section "Testing Command Line Interface"
|
|
test_case "help option" \
|
|
"$PROJECT_ROOT/scripts/setup_dev.sh --help" \
|
|
"Usage:" \
|
|
true
|
|
|
|
test_case "unknown option" \
|
|
"$PROJECT_ROOT/scripts/setup_dev.sh --unknown" \
|
|
"Unknown option" \
|
|
false
|
|
|
|
# Section 2: Go Environment Check
|
|
print_section "Testing Go Environment"
|
|
test_case "go installation" \
|
|
"command -v go" \
|
|
"" \
|
|
true
|
|
|
|
test_case "go version format" \
|
|
"go version" \
|
|
"go version go1" \
|
|
true
|
|
|
|
test_case "go modules enabled" \
|
|
"go env GO111MODULE" \
|
|
"on" \
|
|
true
|
|
|
|
# Section 3: Development Tool Installation
|
|
print_section "Testing Development Tools"
|
|
test_case "doctoc installation check" \
|
|
"command -v doctoc" \
|
|
"" \
|
|
true
|
|
|
|
test_case "trunk installation check" \
|
|
"command -v trunk" \
|
|
"" \
|
|
true
|
|
|
|
if [[ "$SKIP_INSTALL" == "false" ]]; then
|
|
test_case "doctoc functionality" \
|
|
"doctoc --version" \
|
|
"doctoc@" \
|
|
true
|
|
|
|
test_case "trunk functionality" \
|
|
"trunk --version" \
|
|
"trunk" \
|
|
true
|
|
fi
|
|
|
|
# Section 4: Project Configuration
|
|
print_section "Testing Project Configuration"
|
|
test_case "go.mod existence" \
|
|
"test -f $PROJECT_ROOT/go.mod" \
|
|
"" \
|
|
true
|
|
|
|
test_case "trunk.yaml existence" \
|
|
"test -f $PROJECT_ROOT/.trunk/trunk.yaml" \
|
|
"" \
|
|
true
|
|
|
|
# Section 5: Error Conditions
|
|
print_section "Testing Error Conditions"
|
|
test_case "invalid GOPATH" \
|
|
"GOPATH=/nonexistent $PROJECT_ROOT/scripts/setup_dev.sh" \
|
|
"Invalid GOPATH" \
|
|
false
|
|
|
|
if [[ "$SKIP_INSTALL" == "false" ]]; then
|
|
test_case "network failure simulation" \
|
|
"SIMULATE_NETWORK_FAILURE=1 $PROJECT_ROOT/scripts/setup_dev.sh" \
|
|
"Failed to download" \
|
|
false
|
|
fi
|
|
|
|
# Report test results and exit with appropriate status
|
|
report_results
|
|
|
|
# Report results
|
|
echo
|
|
echo "Test Results:"
|
|
echo "Passed: $PASS"
|
|
echo "Failed: $FAIL"
|
|
exit $FAIL
|