mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2025-11-29 17:38:24 +08:00
feat(bash): startup-scripts reworked + bash scripts workflow integration (#22401)
This commit is contained in:
143
apps/test-framework/helpers/test_common.sh
Normal file
143
apps/test-framework/helpers/test_common.sh
Normal file
@@ -0,0 +1,143 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# AzerothCore Test Common Utilities
|
||||
# Shared functions and setup for all BATS tests
|
||||
|
||||
export AC_TEST_FRAMEWORK_VERSION="1.0.0"
|
||||
|
||||
# Get paths
|
||||
AC_TEST_FRAMEWORK_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
AC_PROJECT_ROOT="$(cd "$AC_TEST_FRAMEWORK_DIR/../.." && pwd)"
|
||||
|
||||
# Common test environment setup
|
||||
setup_test_env() {
|
||||
export TEST_DIR="$(mktemp -d)"
|
||||
export AC_TEST_ROOT="$AC_PROJECT_ROOT"
|
||||
export AC_TEST_APPS="$AC_TEST_ROOT/apps"
|
||||
|
||||
# Create standard test directory structure
|
||||
mkdir -p "$TEST_DIR"/{bin,etc,logs,data,crashes,build}
|
||||
|
||||
# Set up test-specific environment variables
|
||||
export ORIGINAL_PATH="$PATH"
|
||||
export PATH="$TEST_DIR/bin:$PATH"
|
||||
|
||||
# Common environment variables for AzerothCore
|
||||
export BUILDPATH="$TEST_DIR/build"
|
||||
export SRCPATH="$AC_TEST_ROOT"
|
||||
export BINPATH="$TEST_DIR/bin"
|
||||
export LOGS_PATH="$TEST_DIR/logs"
|
||||
}
|
||||
|
||||
cleanup_test_env() {
|
||||
if [[ -n "$TEST_DIR" && -d "$TEST_DIR" ]]; then
|
||||
rm -rf "$TEST_DIR"
|
||||
fi
|
||||
if [[ -n "$ORIGINAL_PATH" ]]; then
|
||||
export PATH="$ORIGINAL_PATH"
|
||||
fi
|
||||
}
|
||||
|
||||
# Create standard test binary
|
||||
create_test_binary() {
|
||||
local binary_name="$1"
|
||||
local exit_code="${2:-0}"
|
||||
local runtime="${3:-2}"
|
||||
local extra_output="${4:-""}"
|
||||
|
||||
cat > "$TEST_DIR/bin/$binary_name" << EOF
|
||||
#!/usr/bin/env bash
|
||||
echo "$binary_name starting with config: \$2"
|
||||
echo "$binary_name running for $runtime seconds..."
|
||||
if [[ -n "$extra_output" ]]; then
|
||||
echo "$extra_output"
|
||||
fi
|
||||
sleep $runtime
|
||||
echo "$binary_name exiting with code $exit_code"
|
||||
exit $exit_code
|
||||
EOF
|
||||
chmod +x "$TEST_DIR/bin/$binary_name"
|
||||
}
|
||||
|
||||
# Create test configuration file
|
||||
create_test_config() {
|
||||
local config_name="$1"
|
||||
local content="$2"
|
||||
|
||||
cat > "$TEST_DIR/etc/$config_name" << EOF
|
||||
# Test configuration file: $config_name
|
||||
# Generated by AzerothCore test framework
|
||||
$content
|
||||
EOF
|
||||
}
|
||||
|
||||
# Create AzerothCore specific test binaries
|
||||
create_acore_binaries() {
|
||||
create_test_binary "authserver" 0 1 "AuthServer initialized"
|
||||
create_test_binary "worldserver" 0 2 "WorldServer initialized"
|
||||
create_test_binary "cmake" 0 1 "CMake configured"
|
||||
create_test_binary "make" 0 2 "Build completed"
|
||||
create_test_binary "mapextractor" 0 3 "Map extraction completed"
|
||||
create_test_binary "vmap4extractor" 0 2 "VMap extraction completed"
|
||||
create_test_binary "vmap4assembler" 0 1 "VMap assembly completed"
|
||||
create_test_binary "mmaps_generator" 0 5 "MMap generation completed"
|
||||
}
|
||||
|
||||
# Create AzerothCore specific test configs
|
||||
create_acore_configs() {
|
||||
create_test_config "authserver.conf" 'Database.Info = "127.0.0.1;3306;acore;acore;acore_auth"
|
||||
LoginDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_auth"'
|
||||
|
||||
create_test_config "worldserver.conf" 'Database.Info = "127.0.0.1;3306;acore;acore;acore_world"
|
||||
LoginDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_auth"
|
||||
CharacterDatabaseInfo = "127.0.0.1;3306;acore;acore;acore_characters"'
|
||||
|
||||
create_test_config "config.sh" "export BUILDPATH=\"$TEST_DIR/build\"
|
||||
export SRCPATH=\"$AC_TEST_ROOT\"
|
||||
export BINPATH=\"$TEST_DIR/bin\"
|
||||
export LOGS_PATH=\"$TEST_DIR/logs\""
|
||||
}
|
||||
|
||||
# Create a test script configuration (for startup scripts)
|
||||
create_test_script_config() {
|
||||
local script_name="$1"
|
||||
local binary_name="${2:-authserver}"
|
||||
|
||||
cat > "$TEST_DIR/conf-$script_name.sh" << EOF
|
||||
export BINPATH="$TEST_DIR/bin"
|
||||
export SERVERBIN="$binary_name"
|
||||
export CONFIG="$TEST_DIR/etc/$binary_name.conf"
|
||||
export LOGS_PATH="$TEST_DIR/logs"
|
||||
export LOG_PREFIX_NAME="$script_name"
|
||||
export SCREEN_NAME="AC-$script_name"
|
||||
export GDB_ENABLED=0
|
||||
export WITH_CONSOLE=1
|
||||
EOF
|
||||
}
|
||||
|
||||
# Debug helper function
|
||||
debug_on_failure() {
|
||||
if [[ "$status" -ne 0 ]]; then
|
||||
echo "Command failed with status: $status" >&3
|
||||
echo "Output was:" >&3
|
||||
echo "$output" >&3
|
||||
if [[ -n "$TEST_DIR" ]]; then
|
||||
echo "Test directory contents:" >&3
|
||||
ls -la "$TEST_DIR" >&3 2>/dev/null || true
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Print test environment info
|
||||
print_test_env() {
|
||||
echo "Test Environment:" >&3
|
||||
echo " TEST_DIR: $TEST_DIR" >&3
|
||||
echo " AC_TEST_ROOT: $AC_TEST_ROOT" >&3
|
||||
echo " AC_TEST_APPS: $AC_TEST_APPS" >&3
|
||||
echo " PATH: $PATH" >&3
|
||||
}
|
||||
|
||||
# Check if running in test mode
|
||||
is_test_mode() {
|
||||
[[ -n "$BATS_TEST_FILENAME" ]] || [[ -n "$TEST_DIR" ]]
|
||||
}
|
||||
Reference in New Issue
Block a user