--- name: msix-integration-test description: Windows SDK MakeAppx.exe를 찾아 MSIX_TEST_MAKEAPPX로 지정하고 package-infra의 ignored 통합 테스트(실제 pack/unpack, 계획 거부, 중복 빌드, 내보내기, 취소)를 실행한 뒤 결과를 해석·기록한다. 선택적으로 FixtureAlpha/Beta 시험 앱을 생성한다. "통합 테스트", "MakeAppx", "실제 빌드 시험", "SDK 테스트", "--ignored"에 사용한다. --- # MakeAppx 통합 시험 `cargo test --workspace`는 SDK 테스트를 건너뛴다. 실제 MSIX 생성 경로는 이 절차로만 검증된다. 이 시험은 **설치 시험이 아니다**. 결과를 "설치 검증"이라고 쓰지 않는다. ## 1. MakeAppx 찾기 ```powershell Get-ChildItem 'C:\Program Files (x86)\Windows Kits\10\bin\*\x64\makeappx.exe' | Sort-Object FullName -Descending | Select-Object -First 1 -ExpandProperty FullName ``` - 없으면 중단하고 사용자에게 Windows SDK 설치가 필요하다고 알린다. 자동 설치하지 않는다. - 여러 버전이 있으면 가장 높은 버전을 쓰되, 사용한 경로와 SHA-256을 기록한다: ```powershell (Get-FileHash -Algorithm SHA256 '<경로>').Hash.ToLower() ``` - 서명 테스트는 같은 폴더의 `signtool.exe`를 자동으로 쓴다. 없으면 서명 관련 테스트가 실패하므로 결과 해석 시 구분한다. ## 2. 실행 `D:\networkSetup\src`에서. 실행 중인 `msix-studio.exe`/`tauri dev`는 종료한다. ```powershell $env:MSIX_TEST_MAKEAPPX = '' cargo test --locked -p package-infra --test workflow -- --ignored --nocapture Remove-Item Env:MSIX_TEST_MAKEAPPX ``` 또는 전체 검사와 함께: `.\scripts\Check.ps1 -MakeAppx '<경로>'`. 시험 앱이 필요하면(GUI에서 열어 볼 fixture): ```powershell .\scripts\New-Fixtures.ps1 -MakeAppx '<경로>' # 기존 .work/demo 폴더는 덮어쓰지 않음 ``` ## 3. 결과 해석 통합 테스트가 확인하는 것: 두 identity의 pack/unpack, 원본 변경 후 계획 거부(`InputChanged`), 같은 계획 중복 실행 거부, 내보내기 해시 무결성, 취소 시 자식 프로세스 종료. | 증상 | 원인 | | --- | --- | | `MissingTool` | 경로 오타 또는 환경 변수 미설정 | | `UnsupportedTool` | 파일 이름이 `makeappx.exe`가 아님 | | `ToolFailed ... pack.log` | manifest 또는 자산 문제. 로그 파일 경로를 열어 MakeAppx 메시지를 읽는다 | | `ToolTimeout` | 15분 초과. 안티바이러스 실시간 검사 또는 디스크 문제 | | `IdentityMismatch`, `ArtifactMismatch` | 역추출 결과가 계획과 다름. 엔진 버그 가능성, 재현 후 보고 | | 서명 테스트만 실패 | `signtool.exe` 부재 또는 인증서 저장소 상태. 테스트 PC의 저장소를 바꾸지 않는다 | ## 4. 기록 - `change-record` 스킬의 검증 JSON에 `makeAppx: { path, sha256 }`, 통과한 테스트 이름, 실패/미실행 항목을 적는다. - `installationTest`는 `"notRun"`, `deploymentReady`는 `false`. - 생성된 샘플이 `output/samples/` 아래면 커밋되지 않는다. 다른 위치에 만들었으면 추적 여부를 확인한다. ## 금지 - `Install-TestCertificate.ps1` 실행, `Add-AppxPackage`, 인증서 저장소 변경. - 실패한 테스트를 `#[ignore]`로 바꾸거나 단언을 약화. - 결과를 "두 제품 MSIX 설치/업데이트/제거 검증 완료"(BL-53)로 기록.