First Commit
ci / go (push) Waiting to run
ci / go-db (agent) (push) Waiting to run
ci / go-db (config) (push) Waiting to run
ci / go-db (db) (push) Waiting to run
ci / go-db (evidence) (push) Waiting to run
ci / go-db (llmrec) (push) Waiting to run
ci / go-db (server) (push) Waiting to run
web / web (push) Waiting to run
docs / links (push) Canceled after 0s
detections / detections (push) Canceled after 0s

This commit is contained in:
dela
2026-10-09 08:38:16 +08:00
commit 0335d572de
756 changed files with 201663 additions and 0 deletions
@@ -0,0 +1,43 @@
package server
import (
"os"
"path/filepath"
"testing"
)
// task_archive_package.go 의 보관 패키지 삭제 준비 오류 문구를 한국어로 유지하는 회귀 방어
// 테스트다. 한국어 판정은 F3a 가 만든 assertKoreanError(한글 포함·중국어 한자 0)를 재사용한다.
// 누군가 이 리터럴을 중국어로 되돌리면 이 테스트가 실패한다.
//
// 호출 그래프 판정(errArchiveStagedAndOriginalCoexist 상수 주석 참조): 이 오류는 백그라운드
// 아카이브 워커 runOneTaskArchiveJob(task_archives.go:102)이 FailTaskArchiveJob 으로
// task_archives.error 컬럼에 저장하고, tasks/page.tsx 의 TaskArchivesPanel 이 {archive.error}
// 로 화면에 직접 표시하는 사용자 노출 전용이다(actool·planner 되먹임 0). 같은 전파 경로의
// 형제 오류(archiveTask·validateArchivePath)도 이미 한국어라 이 번역은 그와 정합한다.
//
// stageTaskArchivePackageDelete 는 DB 에 닿지 않는 순수 파일 함수라, DB 없는 이 호스트에서
// 원본 파일과 삭제 임시 파일(.deleting-N)을 동시에 만들어 실제 모순 분기를 구동할 수 있다.
func TestTaskArchiveStagedAndOriginalCoexistErrorLocalized(t *testing.T) {
dataDir := t.TempDir()
archivePath := taskArchivePath(dataDir, 21, "42")
if err := os.MkdirAll(filepath.Dir(archivePath), archiveDirMode); err != nil {
t.Fatal(err)
}
// 원본 보관 패키지와 삭제 임시 파일이 모두 존재하는 모순 상태를 만든다.
if err := os.WriteFile(archivePath, []byte("original"), archiveFileMode); err != nil {
t.Fatal(err)
}
staged := archivePath + ".deleting-21"
if err := os.WriteFile(staged, []byte("archive"), archiveFileMode); err != nil {
t.Fatal(err)
}
_, moved, err := stageTaskArchivePackageDelete(archivePath, 21)
if err == nil {
t.Fatalf("원본과 삭제 임시 파일이 공존하면 오류가 반환되어야 합니다 (moved=%v)", moved)
}
if moved {
t.Fatal("공존 모순 상태에서는 moved 가 true 가 되어서는 안 됩니다")
}
assertKoreanError(t, "staged_and_original_coexist", err.Error())
}