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
detections / detections (push) Waiting to run
web / web (push) Waiting to run
docs / links (push) Canceled after 0s
44 lines
2.1 KiB
Go
44 lines
2.1 KiB
Go
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())
|
|
}
|