chore: add Claude Code guidelines, rules and skills
- CLAUDE.md: product principles, crate layering, common commands, commits. - .claude/rules: common, Rust, frontend, Tauri IPC, docs and security rules. - .claude/skills: check, add-tauri-command, project-model-change, change-record, msix-integration-test, backlog-status. Refs #16 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7f5540f148
commit
905e6d4eaa
13 files changed
+654
No files matched your search
@@ -0,0 +1,67 @@
|
||||
---
|
||||
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 = '<makeappx.exe 절대 경로>'
|
||||
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)로 기록.
|
||||
Reference in new issue
Block a user