Compare commits

..
Author SHA1 Message Date
Jeffery 5c2c37f9d1 test(main): 設 AI_REVIEW_SKIP_MAIN 略過自動執行
CI / 2. TEST (pull_request) Successful in 9m44s
CI / 3. RESULT (pull_request) Successful in 1s
CI / 1. BUILD (pull_request) Successful in 1s
2026-07-03 17:53:52 +08:00
Jeffery 5fbfec3aaf fix(main): 改用 AI_REVIEW_SKIP_MAIN 守衛 auto-run,修復 node action runtime 不執行 main 的回歸 2026-07-03 17:53:52 +08:00
2 changed files with 6 additions and 4 deletions
+3 -4
View File
@@ -1,5 +1,4 @@
import path from 'path'; import path from 'path';
import { pathToFileURL } from 'url';
import { GITEA_REPOSITORY, PR_NUMBER, PR_HEAD_BRANCH, PR_BASE_BRANCH, getLLMConfig, FINDINGS_PATH, EXCLUSIONS_PATH } from './config.js'; import { GITEA_REPOSITORY, PR_NUMBER, PR_HEAD_BRANCH, PR_BASE_BRANCH, getLLMConfig, FINDINGS_PATH, EXCLUSIONS_PATH } from './config.js';
import { loadRoles, getRoleIntro } from './roles.js'; import { loadRoles, getRoleIntro } from './roles.js';
import { getPRDiff, postComment, getCommitMessageBySha, getBotReviewOutcome, shouldSkipBotCommit } from './gitea.js'; import { getPRDiff, postComment, getCommitMessageBySha, getBotReviewOutcome, shouldSkipBotCommit } from './gitea.js';
@@ -237,9 +236,9 @@ export async function main() {
section('Pipeline 結束'); section('Pipeline 結束');
} }
// 僅在作為 CLI 進入點(node src/main.js)執行時自動啟動 pipeline // 預設一律自動啟動 pipeline(正式以 node 執行、或由 Gitea node action runtime 載入時皆會執行)。
// 被 import(例如單元測試)時不自動執行,方便注入 mock 測試各分支 // 僅單元測試會設 AI_REVIEW_SKIP_MAIN=1 略過自動執行,改為手動呼叫 export 的 main() 注入 mock 測試。
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { if (!process.env.AI_REVIEW_SKIP_MAIN) {
main().catch(e => { main().catch(e => {
error(`Runner failed: ${e.message}`); error(`Runner failed: ${e.message}`);
process.exit(1); process.exit(1);
+3
View File
@@ -5,6 +5,9 @@ import assert from 'node:assert/strict';
// 把所有相依模組換成可控 stub,逐一驗證關鍵分支的 exit code 與退出時機。 // 把所有相依模組換成可控 stub,逐一驗證關鍵分支的 exit code 與退出時機。
// 需要 `--experimental-test-module-mocks`(見 package.json test script)。 // 需要 `--experimental-test-module-mocks`(見 package.json test script)。
// 略過 main.js 被 import 時的自動執行;本測試改為手動呼叫 export 的 main()。
process.env.AI_REVIEW_SKIP_MAIN = '1';
const U = (rel) => new URL(rel, import.meta.url).href; const U = (rel) => new URL(rel, import.meta.url).href;
// 每個相依模組的預設 stub(快樂路徑:無 critical、diff 非空、角色分析成功)。 // 每個相依模組的預設 stub(快樂路徑:無 critical、diff 非空、角色分析成功)。