ci: 契约测试接入 CI 与 make test

This commit is contained in:
xweiba
2026-09-11 14:20:50 +08:00
parent 393c7cc215
commit f4712f7fb2
4 changed files with 63 additions and 1 deletions
+23
View File
@@ -0,0 +1,23 @@
name: Contract Tests
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
contract-tests:
runs-on: macos-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run contract tests
run: ./Tests/run_all_contract_tests.sh
+3
View File
@@ -28,6 +28,9 @@ jobs:
- name: Install XcodeGen
run: brew install xcodegen
- name: Run contract tests
run: ./Tests/run_all_contract_tests.sh
- name: Build unsigned IPA
run: ./build.sh
+4 -1
View File
@@ -1,4 +1,4 @@
.PHONY: setup core ipa-unsigned verify-ipa
.PHONY: setup core ipa-unsigned verify-ipa test
setup:
./Scripts/setup.sh
@@ -12,3 +12,6 @@ ipa-unsigned: core
verify-ipa:
@test -n "$(IPA)" || (echo "Usage: make verify-ipa IPA=/absolute/path/to/signed.ipa" >&2; exit 2)
./Scripts/verify-ipa.sh --signed "$(IPA)"
test:
./Tests/run_all_contract_tests.sh
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
passed=0
failed=0
failed_scripts=()
for script in "$ROOT"/Tests/*_test.sh; do
name="$(basename "$script")"
echo "==> $name"
if bash "$script"; then
echo "PASS: $name"
passed=$((passed + 1))
else
echo "FAIL: $name"
failed_scripts+=("$name")
failed=$((failed + 1))
fi
done
echo "----------------------------------------"
echo "Contract tests: $passed passed / $failed failed"
if [ "$failed" -gt 0 ]; then
echo "Failed scripts:"
for name in "${failed_scripts[@]}"; do
echo " - $name"
done
exit 1
fi
echo "PASS: all contract tests"