Skip to main content

test-unbranded-emitter

Build and test the @typespec/http-client-python emitter. Use this skill whenever the user wants to test their local changes to the emitter, run the generator test suite, check if their http-client-python changes are passing, or validate a fix. Triggers on phrases like "test the emitter", "run tests", "check if my changes pass", "run test:generator", "run CI", or any mention of testing/validating changes in the emitter package.

설치로 이동

소스 정보

저장소
microsoft/typespec
최근 소스 활동
2026년 2월 27일 18:44
감지된 SKILL.md 언어
영어
스타
5,872
포크
399

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
test-unbranded-emitter
description
Build and test the @typespec/http-client-python emitter. Use this skill whenever the user wants to test their local changes to the emitter, run the generator test suite, check if their http-client-python changes are passing, or validate a fix. Triggers on phrases like "test the emitter", "run tests", "check if my changes pass", "run test:generator", "run CI", or any mention of testing/validating changes in the emitter package.
# Test Emitter Skill Builds and tests `@typespec/http-client-python` to validate local changes. Automatically regenerates if the generated code is stale. ## Paths All paths are relative to the http-client-python package root: `~/Desktop/github/typespec/packages/http-client-python` | Item | Path | | --------------------- | ------------------------------------------------------- | | Package root | `~/Desktop/github/typespec/packages/http-client-python` | | Emitter source | `emitter/src` | | Generated (unbranded) | `generator/test/unbranded/generated` | | Generated (azure) | `generator/test/azure/generated` | | Regenerate marker | `.last-regenerate` | ## Workflow ### Step 1: Build the emitter ```bash cd ~/Desktop/github/typespec/packages/http-client-python npm run build ``` Check for TypeScript compilation errors. If the build fails, report the errors to the user and stop — do not proceed to testing. ### Step 2: Check if regeneration is needed Regeneration is needed if ANY of these conditions are true: 1. **Generated folder doesn't exist or is empty**: ```bash cd ~/Desktop/github/typespec/packages/http-client-python if [ ! -d "generator/test/unbranded/generated" ] \ || [ -z "$(ls -A generator/test/unbranded/generated 2> /dev/null)" ]; then echo "Unbranded generated folder is empty - regeneration needed" fi if [ ! -d "generator/test/azure/generated" ] \ || [ -z "$(ls -A generator/test/azure/generated 2> /dev/null)" ]; then echo "Azure generated folder is empty - regeneration needed" fi ``` 2. **No regenerate marker file exists**: ```bash if [ ! -f ".last-regenerate" ]; then echo "No regenerate marker - regeneration needed" fi ``` 3. **Emitter source files are newer than the marker**: ```bash if [ -n "$(find emitter/src -newer .last-regenerate -type f 2> /dev/null | head -1)" ]; then echo "Emitter source changed since last regenerate - regeneration needed" fi ``` ### Step 3: Regenerate if needed If any condition from Step 2 is true: ```bash cd ~/Desktop/github/typespec/packages/http-client-python echo "Regenerating test clients..." npm run regenerate ``` After successful regeneration, update the marker: ```bash touch .last-regenerate ``` If regeneration fails, report the error and stop. If regeneration is NOT needed, inform the user: > "Generated code is up to date (source unchanged since last regeneration). Skipping regenerate." ### Step 4: Run the generator test suite ```bash cd ~/Desktop/github/typespec/packages/http-client-python npm run ci ``` This runs: 1. `test:emitter` - vitest unit tests for the emitter 2. `ci:generator` - pytest tests against generated code The full CI can take several minutes. Keep the user informed that it's running. ### Step 5: Report results - **If tests pass**: Confirm success and summarize any notable output (warnings, skipped tests, etc.) - **If tests fail**: Show the failing test names and error messages clearly. Offer to help debug or investigate specific failures. ## Integration with diff-upstream Both skills share the regeneration marker system: - `diff-upstream` always regenerates and updates `.last-regenerate` - `test-unbranded-emitter` checks this marker and skips regeneration if fresh **Efficient workflow**: ``` diff-upstream → test-unbranded-emitter ``` The second command will skip regeneration since `diff-upstream` just did it. **Standalone workflow**: ``` test-unbranded-emitter ``` Will regenerate only if source changed since last run. ## Notes ### Regeneration takes time `npm run regenerate` can take 2-3 minutes. The staleness check avoids this delay when the user is iterating on test fixes (not emitter changes). ### Test types | Command | What it runs | Duration | | ------------------------ | ------------------------- | ------------ | | `npm run test:emitter` | vitest unit tests only | ~5 seconds | | `npm run test:generator` | pytest only (no vitest) | ~2 minutes | | `npm run ci` | vitest + pytest (full CI) | ~2-3 minutes | This skill runs `npm run ci` (full CI). If the user wants just unit tests or just pytest, they can ask specifically. ### Known flaky test The test server teardown sometimes fails with `ProcessLookupError` - this is a pre-existing infrastructure issue, not a test failure. All actual tests may pass even if you see this error at the end. ### Force regeneration If the user suspects stale generated code despite the marker, they can force regeneration: ```bash rm ~/Desktop/github/typespec/packages/http-client-python/.last-regenerate ``` Then run the skill again. ## Gitignore Ensure this entry is in the package's `.gitignore`: ``` .last-regenerate ```
GitHub에서 보기