fix(e2e): validate fixture cleanup interval · openclaw/openclaw@84bcdaa
vincentkoc
·
2026-06-19
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -16,6 +16,20 @@ openclaw_plugins_read_positive_int_env() {
|
16 | 16 | printf "%s\n" "$((10#$value))" |
17 | 17 | } |
18 | 18 | |
| 19 | +openclaw_plugins_read_nonnegative_decimal_env() { |
| 20 | +local name="${1:?missing environment variable name}" |
| 21 | +local fallback="${2:?missing fallback value}" |
| 22 | +local value="${!name-}" |
| 23 | +if [[ -z "${!name+x}" ]]; then |
| 24 | + value="$fallback" |
| 25 | +fi |
| 26 | +if [[ ! "$value" =~ ^[0-9]+([.][0-9]+)?$ ]]; then |
| 27 | +echo "invalid $name: $value" >&2 |
| 28 | +return 2 |
| 29 | +fi |
| 30 | +printf "%s\n" "$value" |
| 31 | +} |
| 32 | + |
19 | 33 | openclaw_plugins_cleanup_fixture_servers() { |
20 | 34 | local pid_file |
21 | 35 | local pid |
@@ -47,9 +61,9 @@ openclaw_plugins_fixture_process_alive() {
|
47 | 61 | openclaw_plugins_stop_fixture_process() { |
48 | 62 | local pid="$1" |
49 | 63 | local _ |
50 | | -local attempts |
| 64 | +local attempts interval |
51 | 65 | attempts="$(openclaw_plugins_read_positive_int_env OPENCLAW_PLUGINS_FIXTURE_STOP_ATTEMPTS 40)" || return $? |
52 | | -local interval="${OPENCLAW_PLUGINS_FIXTURE_STOP_INTERVAL_SECONDS:-0.25}" |
| 66 | + interval="$(openclaw_plugins_read_nonnegative_decimal_env OPENCLAW_PLUGINS_FIXTURE_STOP_INTERVAL_SECONDS 0.25)" || return $? |
53 | 67 | if declare -F openclaw_e2e_stop_process >/dev/null 2>&1; then |
54 | 68 | openclaw_e2e_stop_process "$pid" |
55 | 69 | return |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -423,6 +423,40 @@ test -d "$OPENCLAW_PLUGINS_TMP_DIR"
|
423 | 423 | expect(result.stdout).not.toContain("probe"); |
424 | 424 | }); |
425 | 425 | |
| 426 | +it("rejects invalid fixture stop intervals before cleanup polling", () => { |
| 427 | +const result = spawnSync( |
| 428 | +"/bin/bash", |
| 429 | +[ |
| 430 | +"-c", |
| 431 | +[ |
| 432 | +"set -euo pipefail", |
| 433 | +"source scripts/e2e/lib/plugins/fixtures.sh", |
| 434 | +"openclaw_plugins_signal_fixture_process() { echo signal; }", |
| 435 | +"openclaw_plugins_fixture_process_alive() { echo probe; return 1; }", |
| 436 | +"set +e", |
| 437 | +"openclaw_plugins_stop_fixture_process 12345", |
| 438 | +'status="$?"', |
| 439 | +"set -e", |
| 440 | +'exit "$status"', |
| 441 | +].join("\n"), |
| 442 | +], |
| 443 | +{ |
| 444 | +cwd: process.cwd(), |
| 445 | +encoding: "utf8", |
| 446 | +env: { |
| 447 | + ...process.env, |
| 448 | +OPENCLAW_PLUGINS_FIXTURE_STOP_ATTEMPTS: "2", |
| 449 | +OPENCLAW_PLUGINS_FIXTURE_STOP_INTERVAL_SECONDS: "soon", |
| 450 | +}, |
| 451 | +}, |
| 452 | +); |
| 453 | + |
| 454 | +expect(result.status).toBe(2); |
| 455 | +expect(result.stderr).toContain("invalid OPENCLAW_PLUGINS_FIXTURE_STOP_INTERVAL_SECONDS: soon"); |
| 456 | +expect(result.stdout).not.toContain("signal"); |
| 457 | +expect(result.stdout).not.toContain("probe"); |
| 458 | +}); |
| 459 | + |
426 | 460 | it("bounds npm fixture registry logs when readiness fails", () => { |
427 | 461 | const root = mkdtempSync(path.join(tmpdir(), "openclaw-plugin-npm-fixture-log-")); |
428 | 462 | try { |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。