mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-29 13:04:59 +00:00
Improved the integration testing skill based on usage
This commit is contained in:
parent
bce1cd9290
commit
54d7b81e7b
5 changed files with 168 additions and 20 deletions
35
.skills/mcc-integration-testing/scripts/get_server_port.sh
Normal file
35
.skills/mcc-integration-testing/scripts/get_server_port.sh
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if [[ $# -ne 1 ]]; then
|
||||
echo "Usage: $0 <server-dir>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
REPO_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
|
||||
SERVER_DIR_NAME="$1"
|
||||
SERVERS_ROOT="${MCC_SERVERS:-$REPO_ROOT/MinecraftOfficial/downloads}"
|
||||
SERVER_DIR="$SERVERS_ROOT/$SERVER_DIR_NAME"
|
||||
PROPS_FILE="$SERVER_DIR/server.properties"
|
||||
LATEST_LOG="$SERVER_DIR/logs/latest.log"
|
||||
|
||||
if [[ -f "$PROPS_FILE" ]]; then
|
||||
PORT_LINE="$(grep -E '^server-port=' "$PROPS_FILE" | tail -n 1 || true)"
|
||||
if [[ -n "$PORT_LINE" ]]; then
|
||||
PORT="${PORT_LINE#server-port=}"
|
||||
if [[ "$PORT" =~ ^[0-9]+$ ]]; then
|
||||
printf '%s\n' "$PORT"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -f "$LATEST_LOG" ]]; then
|
||||
PORT="$(sed -n 's/.*Starting Minecraft server on .*:\([0-9][0-9]*\).*/\1/p' "$LATEST_LOG" | tail -n 1)"
|
||||
if [[ -n "$PORT" ]]; then
|
||||
printf '%s\n' "$PORT"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
printf '25565\n'
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if [[ $# -lt 3 || $# -gt 4 ]]; then
|
||||
echo "Usage: $0 <template-ini> <output-ini> <mc-version> [login]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TEMPLATE_INI="$1"
|
||||
OUTPUT_INI="$2"
|
||||
MC_VERSION="$3"
|
||||
LOGIN_NAME="${4:-CursorBot}"
|
||||
ACCOUNT_TYPE="${MCC_TEST_ACCOUNT_TYPE:-mojang}"
|
||||
PASSWORD_VALUE="${MCC_TEST_PASSWORD-}"
|
||||
|
||||
if [[ "$ACCOUNT_TYPE" != "mojang" && "$ACCOUNT_TYPE" != "microsoft" && "$ACCOUNT_TYPE" != "yggdrasil" ]]; then
|
||||
echo "Unsupported MCC_TEST_ACCOUNT_TYPE: $ACCOUNT_TYPE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${MCC_TEST_PASSWORD+x}" ]]; then
|
||||
if [[ "$ACCOUNT_TYPE" == "mojang" ]]; then
|
||||
PASSWORD_VALUE="-"
|
||||
else
|
||||
PASSWORD_VALUE=""
|
||||
fi
|
||||
fi
|
||||
|
||||
cp "$TEMPLATE_INI" "$OUTPUT_INI"
|
||||
|
||||
sed -i \
|
||||
-e "s#^Account = .*#Account = { Login = \"$LOGIN_NAME\", Password = \"$PASSWORD_VALUE\" }#" \
|
||||
-e "s#^AccountType = .*#AccountType = \"$ACCOUNT_TYPE\"#" \
|
||||
-e "s#^MinecraftVersion = \"[^\"]*\"\\(.*\\)\$#MinecraftVersion = \"$MC_VERSION\"\\1#" \
|
||||
-e 's#^TerrainAndMovements = false#TerrainAndMovements = true#' \
|
||||
-e 's#^InventoryHandling = false#InventoryHandling = true#' \
|
||||
-e 's#^EntityHandling = false#EntityHandling = true#' \
|
||||
-e 's#^AutoRespawn = false#AutoRespawn = true#' \
|
||||
"$OUTPUT_INI"
|
||||
|
||||
grep -Fq "AccountType = \"$ACCOUNT_TYPE\"" "$OUTPUT_INI" || {
|
||||
echo "Failed to enforce account type $ACCOUNT_TYPE in $OUTPUT_INI" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [[ "$ACCOUNT_TYPE" == "mojang" ]]; then
|
||||
grep -Eq '^Account = \{ Login = ".*", Password = "-" \}' "$OUTPUT_INI" || {
|
||||
echo "Failed to enforce offline account in $OUTPUT_INI" >&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
|
||||
printf '%s\n' "$OUTPUT_INI"
|
||||
|
|
@ -38,24 +38,7 @@ cleanup() {
|
|||
trap cleanup EXIT
|
||||
|
||||
prepare_config() {
|
||||
cp "$REPO_ROOT/MinecraftClient.ini" "$CFG"
|
||||
|
||||
sed -i \
|
||||
-e 's/Account = { Login = "test", Password = "-" }/Account = { Login = "CursorBot", Password = "-" }/' \
|
||||
-e "s/MinecraftVersion = \"auto\"/MinecraftVersion = \"$MC_VERSION\"/" \
|
||||
-e 's/TerrainAndMovements = false/TerrainAndMovements = true/' \
|
||||
-e 's/InventoryHandling = false/InventoryHandling = true/' \
|
||||
-e 's/EntityHandling = false/EntityHandling = true/' \
|
||||
-e 's/AutoRespawn = false/AutoRespawn = true/' \
|
||||
"$CFG"
|
||||
|
||||
sed -i '/^\[ChatBot.ScriptScheduler\]/,/^\[/ { s/^Enabled = true/Enabled = false/; }' "$CFG"
|
||||
sed -i '/^\[ChatBot.DiscordRpc\]/,/^\[/ { s/^Enabled = true/Enabled = false/; }' "$CFG"
|
||||
sed -i '/^\[ChatBot.AntiAFK\]/,/^\[/ { s/^Enabled = true/Enabled = false/; }' "$CFG"
|
||||
sed -i '/^\[ChatBot.AutoDig\]/,/^\[/ { s/^Enabled = true/Enabled = false/; }' "$CFG"
|
||||
sed -i '/^\[ChatBot.AutoAttack\]/,/^\[/ { s/^Enabled = true/Enabled = false/; }' "$CFG"
|
||||
sed -i '/^\[ChatBot.PlayerListLogger\]/,/^\[/ { s/^Enabled = true/Enabled = false/; }' "$CFG"
|
||||
sed -i '/^\[ChatBot.ReplayCapture\]/,/^\[/ { s/^Enabled = true/Enabled = false/; }' "$CFG"
|
||||
bash "$SCRIPT_DIR/prepare_offline_mcc_config.sh" "$REPO_ROOT/MinecraftClient.ini" "$CFG" "$MC_VERSION" >/dev/null
|
||||
}
|
||||
|
||||
wait_for_file_pattern() {
|
||||
|
|
@ -165,6 +148,7 @@ run_mcc_command() {
|
|||
|
||||
"$SCRIPT_DIR/ensure_offline_server.sh" "$VERSION"
|
||||
prepare_config
|
||||
SERVER_PORT="$(bash "$SCRIPT_DIR/get_server_port.sh" "$VERSION")"
|
||||
|
||||
: > "$INPUT_FILE"
|
||||
|
||||
|
|
@ -178,7 +162,7 @@ wait_for_server_ready || fail "Server did not become ready"
|
|||
echo "Starting MCC..."
|
||||
(
|
||||
cd "$REPO_ROOT"
|
||||
MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release --no-build -- "$CFG" > "$MCC_LOG" 2>&1
|
||||
MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release --no-build -- "$CFG" CursorBot - "localhost:$SERVER_PORT" > "$MCC_LOG" 2>&1
|
||||
) &
|
||||
MCC_PID=$!
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue