Files
Gnuboard7/tests/Unit/Installer/InstallerBestEffortMessageTest.php
T
HeuJung de18159986 fix(core,admin_basic): 정적 게시 재게시 누락 3건 수정 + 관리자 수동 복구 UI + sudo core:update 소유권 정합
- 템플릿 update 는 레이아웃 변경 여부와 무관하게 캐시 버전을 올리고(실패 복원 뒤에도), 자산 주소 방식 전환 3경로도 bump 한다
- config:cache 가 컨테이너 인스턴스를 덮어 이후 terminating 재게시가 사라지던 결함을 복원 헬퍼로 차단
- custom/ 변경 감지와 게시가 같은 열거자(재귀·크기 포함)를 쓰고, 서명은 호스트별로 저장
- 캐시 버전·서명 키를 만료시키지 않는다(기본 TTL 24h 로 매일 전체 재생성되던 문제)
- 관리자 > 환경설정 > 일반 「초기 화면 정적 파일」 카드: 상태 조회 + 지금 다시 만들기(확인 모달), 대시보드 알림 버튼 연결, CLI 와 같은 statusReport 소비
- sudo core:update 경로의 root 소유 잔존(설정 디렉토리·임시 폴더·로그·업그레이드 마이그레이션 산출물) 상속·정합화, ext-static 명령 root 경고와 sudo -u 힌트
- 안내·문서·트러블슈팅 4건·audit 룰 ext-cache-version-raw-read·ja 언어팩 동기
2026-09-06 15:22:52 +09:00

55 lines
2.5 KiB
PHP

<?php
namespace Tests\Unit\Installer;
use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;
/**
* 설치기 best-effort 작업 실패 문구 테스트 (#651 C3).
*
* 종전에는 작업 종류와 무관하게 언어팩 전용 문구를 재사용해, 대상이 없는 `static_publish`·
* `config_cache` 실패가 "언어팩 일부 설치에 실패했습니다: (계속 진행)" 으로 찍혔다.
*
* `task-runner.php` 는 진입과 함께 작업을 실행하는 파일이라 테스트에서 include 할 수 없다 —
* 조립 함수의 존재·호출과 문구 키의 형태를 소스로 잠근다.
*/
class InstallerBestEffortMessageTest extends TestCase
{
/**
* @effects installer_best_effort_message_names_the_task
*/
#[Test]
public function best_effort_분기는_작업_라벨_기반_문구_조립_함수를_쓴다(): void
{
$source = (string) file_get_contents(base_path('public/install/includes/task-runner.php'));
$this->assertStringContainsString('function bestEffortFailureMessage(string $taskId, string $target): string', $source);
$this->assertStringContainsString('lang("task_{$taskId}")', $source);
$this->assertStringContainsString("lang('warning_best_effort_task_failed', ['task' => \$display])", $source);
// 실패 분기가 새 조립 함수를 부른다 — 언어팩 전용 키를 직접 부르는 옛 줄은 남아 있지 않다
$this->assertStringContainsString('$warnMsg = bestEffortFailureMessage((string) $taskId, (string) $target);', $source);
$this->assertStringNotContainsString("lang('warning_language_pack_install_partial', ['identifier' => (string) \$target])", $source);
}
/**
* 문구 키가 `:task` 치환 자리를 갖고, best-effort 작업 3종의 라벨 키가 양 로케일에 있다.
*
* @effects installer_best_effort_message_names_the_task
*/
#[Test]
public function 문구_키와_작업_라벨_키가_양_로케일에_있다(): void
{
foreach (['ko', 'en'] as $locale) {
$messages = require base_path("public/install/lang/{$locale}.php");
$this->assertStringContainsString(':task', $messages['warning_best_effort_task_failed'] ?? '', "{$locale}: :task 치환 자리가 없다");
foreach (['task_static_publish', 'task_config_cache', 'task_language_pack_install'] as $key) {
$this->assertNotEmpty($messages[$key] ?? null, "{$locale}: {$key} 라벨이 없다");
}
}
}
}