























@@ -4,17 +4,39 @@ set -euo pipefail
44source scripts/lib/openclaw-e2e-instance.sh
55source scripts/lib/docker-e2e-logs.sh
667-OPENCLAW_ENTRY="$(openclaw_e2e_resolve_entrypoint)"
7+KITCHEN_SINK_SWEEP_SOURCE_ONLY="${KITCHEN_SINK_SWEEP_SOURCE_ONLY:-0}"
8+if [[ -z "${OPENCLAW_ENTRY:-}" && "$KITCHEN_SINK_SWEEP_SOURCE_ONLY" != "1" ]]; then
9+ OPENCLAW_ENTRY="$(openclaw_e2e_resolve_entrypoint)"
10+fi
811export OPENCLAW_ENTRY
12+KITCHEN_SINK_CREATED_TMP_DIR=0
913if [[ -z "${KITCHEN_SINK_TMP_DIR:-}" ]]; then
1014 KITCHEN_SINK_TMP_DIR="$(mktemp -d "/tmp/openclaw-kitchen-sink.XXXXXX")"
15+ KITCHEN_SINK_CREATED_TMP_DIR=1
1116else
1217 mkdir -p "$KITCHEN_SINK_TMP_DIR"
1318fi
1419export KITCHEN_SINK_TMP_DIR
1520KITCHEN_SINK_CLI_TIMEOUT="${KITCHEN_SINK_CLI_TIMEOUT:-180s}"
21+KITCHEN_SINK_CLAWHUB_FIXTURE_DIR=""
22+KITCHEN_SINK_CLAWHUB_PID_FILE=""
23+24+cleanup_kitchen_sink_sweep() {
25+if [[ -n "${KITCHEN_SINK_CLAWHUB_PID_FILE:-}" && -f "$KITCHEN_SINK_CLAWHUB_PID_FILE" ]]; then
26+ openclaw_e2e_stop_process "$(cat "$KITCHEN_SINK_CLAWHUB_PID_FILE" 2>/dev/null || true)"
27+fi
28+if [[ -n "${KITCHEN_SINK_CLAWHUB_FIXTURE_DIR:-}" ]]; then
29+ rm -rf "$KITCHEN_SINK_CLAWHUB_FIXTURE_DIR"
30+fi
31+if [[ "${KITCHEN_SINK_CREATED_TMP_DIR:-0}" = "1" ]]; then
32+ rm -rf "$KITCHEN_SINK_TMP_DIR"
33+fi
34+}
163517-openclaw_e2e_eval_test_state_from_b64 "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}"
36+if [[ "$KITCHEN_SINK_SWEEP_SOURCE_ONLY" != "1" ]]; then
37+trap cleanup_kitchen_sink_sweep EXIT
38+ openclaw_e2e_eval_test_state_from_b64 "${OPENCLAW_TEST_STATE_SCRIPT_B64:?missing OPENCLAW_TEST_STATE_SCRIPT_B64}"
39+fi
18401941run_kitchen_sink_openclaw_logged() {
2042local label="$1"
@@ -53,12 +75,13 @@ start_kitchen_sink_clawhub_fixture_server() {
5375 node scripts/e2e/lib/clawhub-fixture-server.cjs kitchen-sink-plugin "$server_port_file" >"$server_log" 2>&1 &
5476local server_pid="$!"
5577echo "$server_pid" >"$server_pid_file"
78+ KITCHEN_SINK_CLAWHUB_FIXTURE_DIR="$fixture_dir"
79+ KITCHEN_SINK_CLAWHUB_PID_FILE="$server_pid_file"
56805781local wait_attempts="${OPENCLAW_CLAWHUB_FIXTURE_WAIT_ATTEMPTS:-600}"
5882for _ in $(seq 1 "$wait_attempts"); do
5983if [[ -s "$server_port_file" ]]; then
6084export OPENCLAW_CLAWHUB_URL="http://127.0.0.1:$(cat "$server_port_file")"
61-trap 'if [[ -f "'"$server_pid_file"'" ]]; then kill "$(cat "'"$server_pid_file"'")" 2>/dev/null || true; fi' EXIT
6285return 0
6386fi
6487if ! kill -0 "$server_pid" 2>/dev/null; then
@@ -131,51 +154,57 @@ run_failure_scenario() {
131154 assert_kitchen_sink_removed
132155}
133156134-if [[ "$KITCHEN_SINK_SCENARIOS" == *"clawhub:"* ]]; then
135-if [[ "${OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB:-0}" = "1" ]]; then
136-export OPENCLAW_CLAWHUB_URL="${OPENCLAW_CLAWHUB_URL:-${CLAWHUB_URL:-https://clawhub.ai}}"
137-else
138-if [[ -n "${OPENCLAW_CLAWHUB_URL:-}" || -n "${CLAWHUB_URL:-}" ]]; then
139-echo "Ignoring ambient ClawHub URL for fixture-mode kitchen-sink E2E; set OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB=1 for live ClawHub."
157+run_kitchen_sink_sweep_main() {
158+if [[ "$KITCHEN_SINK_SCENARIOS" == *"clawhub:"* ]]; then
159+if [[ "${OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB:-0}" = "1" ]]; then
160+export OPENCLAW_CLAWHUB_URL="${OPENCLAW_CLAWHUB_URL:-${CLAWHUB_URL:-https://clawhub.ai}}"
161+else
162+if [[ -n "${OPENCLAW_CLAWHUB_URL:-}" || -n "${CLAWHUB_URL:-}" ]]; then
163+echo "Ignoring ambient ClawHub URL for fixture-mode kitchen-sink E2E; set OPENCLAW_KITCHEN_SINK_LIVE_CLAWHUB=1 for live ClawHub."
164+fi
165+unset OPENCLAW_CLAWHUB_URL CLAWHUB_URL
166+ clawhub_fixture_dir="$(mktemp -d "${KITCHEN_SINK_TMP_DIR}/clawhub.XXXXXX")"
167+ start_kitchen_sink_clawhub_fixture_server "$clawhub_fixture_dir"
140168fi
141-unset OPENCLAW_CLAWHUB_URL CLAWHUB_URL
142- clawhub_fixture_dir="$(mktemp -d "${KITCHEN_SINK_TMP_DIR}/clawhub.XXXXXX")"
143- start_kitchen_sink_clawhub_fixture_server "$clawhub_fixture_dir"
144169fi
145-fi
146170147-scenario_count=0
148-while IFS='|' read -r label spec plugin_id source expectation surface_mode personality preinstall_spec; do
149-if [ -z "${label:-}" ] || [[ "$label" == \#* ]]; then
150-continue
151-fi
152- scenario_count=$((scenario_count + 1))
153-export KITCHEN_SINK_LABEL="$label"
154-export KITCHEN_SINK_SPEC="$spec"
155-export KITCHEN_SINK_ID="$plugin_id"
156-export KITCHEN_SINK_SOURCE="$source"
157-export KITCHEN_SINK_SURFACE_MODE="$surface_mode"
158-export KITCHEN_SINK_PERSONALITY="${personality:-}"
159-export OPENCLAW_KITCHEN_SINK_PERSONALITY="${personality:-}"
160-export KITCHEN_SINK_PREINSTALL_SPEC="${preinstall_spec:-}"
161-case "$expectation" in
162- success)
163- run_success_scenario
164- ;;
165- failure)
166- run_failure_scenario
167- ;;
168-*)
169-echo "Unknown kitchen-sink expectation for ${label}: ${expectation}" >&2
171+ scenario_count=0
172+while IFS='|' read -r label spec plugin_id source expectation surface_mode personality preinstall_spec; do
173+if [ -z "${label:-}" ] || [[ "$label" == \#* ]]; then
174+continue
175+fi
176+ scenario_count=$((scenario_count + 1))
177+export KITCHEN_SINK_LABEL="$label"
178+export KITCHEN_SINK_SPEC="$spec"
179+export KITCHEN_SINK_ID="$plugin_id"
180+export KITCHEN_SINK_SOURCE="$source"
181+export KITCHEN_SINK_SURFACE_MODE="$surface_mode"
182+export KITCHEN_SINK_PERSONALITY="${personality:-}"
183+export OPENCLAW_KITCHEN_SINK_PERSONALITY="${personality:-}"
184+export KITCHEN_SINK_PREINSTALL_SPEC="${preinstall_spec:-}"
185+case "$expectation" in
186+ success)
187+ run_success_scenario
188+ ;;
189+ failure)
190+ run_failure_scenario
191+ ;;
192+*)
193+echo "Unknown kitchen-sink expectation for ${label}: ${expectation}" >&2
194+exit 1
195+ ;;
196+esac
197+done <<<"$KITCHEN_SINK_SCENARIOS"
198+199+if [ "$scenario_count" -eq 0 ]; then
200+echo "No kitchen-sink plugin scenarios configured." >&2
170201exit 1
171- ;;
172-esac
173-done <<<"$KITCHEN_SINK_SCENARIOS"
202+fi
174203175-if [ "$scenario_count" -eq 0 ]; then
176-echo "No kitchen-sink plugin scenarios configured." >&2
177-exit 1
178-fi
204+ scan_logs_for_unexpected_errors
205+echo "kitchen-sink plugin Docker E2E passed (${scenario_count} scenario(s))"
206+}
179207180-scan_logs_for_unexpected_errors
181-echo "kitchen-sink plugin Docker E2E passed (${scenario_count} scenario(s))"
208+if [[ "$KITCHEN_SINK_SWEEP_SOURCE_ONLY" != "1" ]]; then
209+ run_kitchen_sink_sweep_main
210+fi
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。