426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
111 lines
4.0 KiB
Bash
Executable File
111 lines
4.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Enumerates the source and unit-test files a pull request actually changed, in
|
|
# the GITHUB_OUTPUT heredoc format the coverage-gate workflow consumes. It is
|
|
# invoked by .github/workflows/coverage-gate.yml as
|
|
# `coverage-changed-files.sh "$BASE" "$HEAD" >> "$GITHUB_OUTPUT"`, and lives as a
|
|
# standalone script (rather than inline YAML) so its path/diff boundary rules are
|
|
# regression-tested by coverage-changed-files.self-test.mjs against a real git
|
|
# repo.
|
|
#
|
|
# The diff is three-dot: it walks from `git merge-base BASE HEAD` to HEAD, so
|
|
# only files the branch itself touched enter the lane. A plain two-dot
|
|
# `BASE..HEAD` diff would count develop-side files the branch never touched as
|
|
# "changed" whenever the branch trails develop, dragging unrelated tests into the
|
|
# gate (issue #15845). Test files are bucketed into a Bun-native lane and a
|
|
# Vitest lane by which runner they import; e2e/live suites and Android specs are
|
|
# excluded by both filename and directory so a `test/e2e/` path cannot slip into
|
|
# the fast unit lane.
|
|
set -euo pipefail
|
|
|
|
BASE=$1
|
|
HEAD=$2
|
|
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
|
|
NODE_SELF_TEST_MANIFEST="$SCRIPT_DIR/coverage-node-self-tests.txt"
|
|
|
|
# Fail fast: an empty merge-base means the two commits share no history (bad
|
|
# fetch depth / wrong refs), which would otherwise silently diff the entire tree.
|
|
MERGE_BASE=$(git merge-base "$BASE" "$HEAD")
|
|
if [ -z "$MERGE_BASE" ]; then
|
|
echo "coverage-changed-files: no merge-base between $BASE and $HEAD" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Excluded from both unit lanes: e2e/live suites (by filename *and* by a
|
|
# `test/e2e/` directory segment) and Android specs. These run in dedicated lanes
|
|
# and pull in heavy harnesses that the changed-file coverage gate must not.
|
|
is_excluded_test() {
|
|
case "$1" in
|
|
*.e2e.test.*|*.live.test.*|packages/app/test/android/*.android.spec.*) return 0 ;;
|
|
packages/test/cloud-e2e/tests/*.spec.*) return 0 ;;
|
|
*/test/e2e/*|test/e2e/*|*/e2e/*.test.*|e2e/*.test.*) return 0 ;;
|
|
esac
|
|
return 1
|
|
}
|
|
|
|
changed_source() {
|
|
{
|
|
git diff --name-only --diff-filter=ACMRT "$MERGE_BASE" "$HEAD" -- \
|
|
'*.ts' '*.tsx' '*.js' '*.jsx' '*.mjs' '*.cjs' '*.mts' '*.cts' \
|
|
| grep -vE '(^|/)(__tests__|__e2e__|test|tests|generated)/|([.-]e2e|[.]generated|[.]test|[.]spec|[.]stories)[.](ts|tsx|js|jsx|mjs|cjs|mts|cts)$|(^|/)vitest[.]config[.](ts|js|mts|mjs|cts|cjs)$' || true
|
|
} \
|
|
| while IFS= read -r file; do
|
|
[ -f "$file" ] || continue
|
|
grep -Fxq "$file" "$NODE_SELF_TEST_MANIFEST" && continue
|
|
echo "$file"
|
|
done \
|
|
| node --no-warnings "$SCRIPT_DIR/coverage-source-classifier.mjs" --base "$MERGE_BASE"
|
|
}
|
|
|
|
changed_tests() {
|
|
git diff --name-only "$MERGE_BASE" "$HEAD" -- \
|
|
'*.test.ts' '*.test.tsx' '*.test.js' '*.test.jsx' '*.test.mjs' \
|
|
'*.test.cjs' '*.test.mts' '*.test.cts' \
|
|
'*.spec.ts' '*.spec.tsx' '*.spec.js' '*.spec.jsx' '*.spec.mjs' \
|
|
'*.spec.cjs' '*.spec.mts' '*.spec.cts'
|
|
}
|
|
|
|
changed_node_self_tests() {
|
|
git diff --name-only --diff-filter=ACMRT "$MERGE_BASE" "$HEAD" \
|
|
| while IFS= read -r file; do
|
|
[ -f "$file" ] || continue
|
|
if grep -Fxq "$file" "$NODE_SELF_TEST_MANIFEST"; then
|
|
echo "$file"
|
|
fi
|
|
done
|
|
}
|
|
|
|
echo 'files<<EOF'
|
|
changed_source
|
|
echo 'EOF'
|
|
|
|
echo 'node_tests<<EOF'
|
|
changed_node_self_tests
|
|
echo 'EOF'
|
|
|
|
echo 'bun_tests<<EOF'
|
|
changed_tests | while IFS= read -r file; do
|
|
[ -f "$file" ] || continue
|
|
is_excluded_test "$file" && continue
|
|
if grep -Eq "from ['\"]vitest['\"]|require\\(['\"]vitest['\"]\\)" "$file"; then
|
|
continue
|
|
fi
|
|
if grep -Eq "from ['\"]@playwright/test['\"]|require\\(['\"]@playwright/test['\"]\\)" "$file"; then
|
|
continue
|
|
fi
|
|
echo "$file"
|
|
done
|
|
echo 'EOF'
|
|
|
|
echo 'vitest_tests<<EOF'
|
|
changed_tests | while IFS= read -r file; do
|
|
[ -f "$file" ] || continue
|
|
is_excluded_test "$file" && continue
|
|
if grep -Eq "from ['\"]@playwright/test['\"]|require\\(['\"]@playwright/test['\"]\\)" "$file"; then
|
|
continue
|
|
fi
|
|
if grep -Eq "from ['\"]vitest['\"]|require\\(['\"]vitest['\"]\\)" "$file"; then
|
|
echo "$file"
|
|
fi
|
|
done
|
|
echo 'EOF'
|