fix(runtime): 运行稳定性 - 修复技能种子、任务续租与回归检查
保留社区技能作者与时间戳修复、Agent 参数约束、资源删除 worker 生命周期、PostgreSQL/Redis 测试门禁及相关回归。 Original-Commit: 0d05ff88bbe6c875d01964041788023a662ff7e8
This commit is contained in:
34
.github/scripts/check-dependency-tests.py
vendored
Normal file
34
.github/scripts/check-dependency-tests.py
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
"""Require named dependency-backed Go tests to run and pass (not merely avoid SKIP)."""
|
||||
|
||||
import json
|
||||
import sys
|
||||
|
||||
REQUIRED = {
|
||||
("database", "TestPostgresAssetIDMigration"),
|
||||
("canvas", "TestRepairAssetBytesPostgres"),
|
||||
("repository", "TestCanvasRevision/postgres"),
|
||||
("platform", "TestRuntimeCoordinatorRedisLeasePreservesLongestTTL"),
|
||||
("app", "TestClearAdminRuntimeCacheUsesRedisWhitelist"),
|
||||
}
|
||||
|
||||
|
||||
def missing_tests(events):
|
||||
ran, passed, failed = set(), set(), set()
|
||||
for event in events:
|
||||
key = (event.get("Package", "").rsplit("/", 1)[-1], event.get("Test"))
|
||||
action = event.get("Action")
|
||||
if action == "run":
|
||||
ran.add(key)
|
||||
elif action == "pass":
|
||||
passed.add(key)
|
||||
elif action in {"skip", "fail"}:
|
||||
failed.add(key)
|
||||
return REQUIRED - ((ran & passed) - failed)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
with open(sys.argv[1], encoding="utf-8") as stream:
|
||||
missing = missing_tests(json.loads(line) for line in stream if line.strip())
|
||||
if missing:
|
||||
sys.exit("Dependency tests missing, skipped or failed: " + repr(sorted(missing)))
|
||||
print("All five dependency-backed tests ran and passed.")
|
||||
29
.github/scripts/test_check_dependency_tests.py
vendored
Normal file
29
.github/scripts/test_check_dependency_tests.py
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
|
||||
spec = importlib.util.spec_from_file_location(
|
||||
"check", Path(__file__).with_name("check-dependency-tests.py")
|
||||
)
|
||||
check = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(check)
|
||||
|
||||
|
||||
class DependencyChecks(unittest.TestCase):
|
||||
def test_requires_run_and_pass_for_every_exact_name(self):
|
||||
events = [
|
||||
{"Package": "example/internal/" + package, "Test": name, "Action": action}
|
||||
for package, name in check.REQUIRED
|
||||
for action in ("run", "pass")
|
||||
]
|
||||
self.assertFalse(check.missing_tests(events))
|
||||
self.assertTrue(check.missing_tests([]))
|
||||
self.assertTrue(check.missing_tests(events[1:]))
|
||||
self.assertTrue(check.missing_tests(events[:-1]))
|
||||
for action in ("skip", "fail"):
|
||||
self.assertTrue(check.missing_tests(events + [dict(events[-1], Action=action)]))
|
||||
self.assertTrue(check.missing_tests([dict(e, Test=e["Test"] + "Renamed") for e in events]))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
10
.github/workflows/quality.yml
vendored
10
.github/workflows/quality.yml
vendored
@@ -55,14 +55,8 @@ jobs:
|
||||
- name: Ensure dependency-backed tests were not skipped
|
||||
shell: bash
|
||||
run: |
|
||||
set -o pipefail
|
||||
go test ./internal/database/ ./internal/canvas/ ./internal/repository/ ./internal/platform/ ./internal/app/ \
|
||||
-run 'TestPostgresAssetIDMigration|TestRepairAssetBytesPostgres|TestCanvasRevision|TestRuntimeCoordinatorRedisLeasePreservesLongestTTL|TestClearAdminRuntimeCacheUsesRedisWhitelist' \
|
||||
-count=1 -v | tee "$RUNNER_TEMP/dependency-tests.log"
|
||||
if grep -q -- "--- SKIP" "$RUNNER_TEMP/dependency-tests.log"; then
|
||||
echo "::error::依赖外部服务的用例被跳过:请检查 CANVAS_TEST_POSTGRES_DSN 与 redis-server"
|
||||
exit 1
|
||||
fi
|
||||
python3 ../.github/scripts/test_check_dependency_tests.py
|
||||
python3 ../.github/scripts/check-dependency-tests.py "$RUNNER_TEMP/go-tests.jsonl"
|
||||
- name: Upload Go test timings
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
|
||||
Reference in New Issue
Block a user