You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/pr-testing/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -245,7 +245,7 @@ Categorize the changes:
245
245
-**Template changes**: Files in `src/Aspire.ProjectTemplates/`
246
246
-**VS Code extension changes**: Files in `extension/`
247
247
-**Test changes**: Files in `tests/`
248
-
-**CI infrastructure changes**: GitHub Actions — files in `.github/workflows/`, `.github/actions/`, `.github/aw/`, `.github/agents/`, or CI scripts under `eng/scripts/`, `eng/testing/github-ci-trigger-patterns.txt`, `eng/test-retry-patterns.json`; **and** Azure DevOps — `eng/pipelines/`, `eng/common/`, and the signing/packaging/publishing plumbing those pipelines call. More broadly, anything that changes *how CI selects, builds, or runs* (e.g. `tools/**` invoked by CI, MSBuild test plumbing in `eng/**/*.props`/`*.targets`, or CI config/data JSON), even when no `.github/` or `eng/pipelines/` file is touched. (Skill/doc-only edits under `.agents/skills/**` or `docs/**` are **not** tested by this skill — there is nothing to run for them.)
248
+
-**CI infrastructure changes**: GitHub Actions — files in `.github/workflows/`, `.github/actions/`, `.github/aw/`, `.github/agents/`, or CI scripts under `eng/scripts/`, `eng/github-ci/ci-skip-entirely-patterns.txt`, `eng/test-retry-patterns.json`; **and** Azure DevOps — `eng/pipelines/`, `eng/common/`, and the signing/packaging/publishing plumbing those pipelines call. More broadly, anything that changes *how CI selects, builds, or runs* (e.g. `tools/**` invoked by CI, MSBuild test plumbing in `eng/**/*.props`/`*.targets`, or CI config/data JSON), even when no `.github/` or `eng/pipelines/` file is touched. (Skill/doc-only edits under `.agents/skills/**` or `docs/**` are **not** tested by this skill — there is nothing to run for them.)
249
249
250
250
> **If the PR touches CI infrastructure, follow the `ci-infra-testing.md` reference in this skill directory for that part.** Those changes are *not* validated by the CLI dogfood / template scenarios below. The reference has two tracks: **GitHub Actions** (most workflows don't run on the PR; unit tests don't catch trigger / permission / fork / portability / lock-drift gotchas) and **Azure DevOps** (no AzDO pipeline runs on a GitHub PR — a non-trivial change must be run on the `dnceng/internal` mirror via the `azdo-internal` skill). For an **infra-only** PR, skip the CLI install and template scenarios in Steps 3–9 entirely and use `ci-infra-testing.md` instead. For a mixed PR, do both.
@@ -143,7 +143,7 @@ actually *validated the change*, not merely that they completed.
143
143
144
144
| Workflow | Runs on the PR when… |
145
145
|----------|----------------------|
146
-
|`ci.yml`| Always, **unless every** changed file matches a glob in `eng/testing/github-ci-trigger-patterns.txt` (then build/test jobs skip). |
146
+
|`ci.yml`| Always, **unless every** changed file matches a glob in `eng/github-ci/ci-skip-entirely-patterns.txt` (then build/test jobs skip). |
147
147
|`tests-quarantine.yml`, `tests-outerloop.yml`|**Only** if the PR touches one of: that file itself, `specialized-test-runner.yml`, `run-tests.yml`, `build-cli-e2e-image.yml`. Otherwise schedule/dispatch only. **The PR run is one project only** — a plumbing smoke test, not full coverage (see below). |
148
148
|`markdownlint.yml`| On every PR — `pull_request` with **no**`paths` filter. |
149
149
|`polyglot-validation.yml`, `typescript-api-compat.yml`, `typescript-sdk-tests.yml`, `extension-e2e-tests.yml`|**Reusable (`workflow_call`)** — not triggered directly. They run via `tests.yml` (itself called by `ci.yml`), so they execute on the PR when `ci.yml`/`tests.yml` run, subject to their own internal `if:` / path gating inside `tests.yml`. |
@@ -156,7 +156,7 @@ Concrete check for the CI-skip path:
156
156
```bash
157
157
# Will ci.yml skip build/test for this PR? Compare changed files to the skip globs.
If you changed `tests-quarantine.yml` / `tests-outerloop.yml` / their shared
@@ -239,7 +239,7 @@ The repo unit-tests its workflow helper scripts (JavaScript, PowerShell, and
239
239
bash) and asserts YAML contracts in `tests/Infrastructure.Tests/`. PR CI runs
240
240
that project **only when `ci.yml`'s test job isn't skipped** — and it *is*
241
241
skipped when every changed file matches a glob in
242
-
`eng/testing/github-ci-trigger-patterns.txt`, which includes `eng/pipelines/**`
242
+
`eng/github-ci/ci-skip-entirely-patterns.txt`, which includes `eng/pipelines/**`
243
243
and `auto-rerun-transient-ci-failures.*` (see Step I-1). So for an infra-only PR
244
244
that touches just those paths, CI does **not** run `Infrastructure.Tests` for
245
245
you — run the matching class locally. When the test job does run, use the map
@@ -636,7 +636,7 @@ Cited PRs are real prior breakages (illustrative, not exhaustive).
636
636
| Too-**broad**`paths:` on a build-heavy reusable workflow re-triggers it on every eng/CI change and exhausts runner disk. | New `pull_request` reusable-workflow triggers must scope `paths:` to just the orchestrating YAMLs, not `src/`/`**`. Simulate which files match before merge. (#12143, #15921) |
637
637
|`tests-quarantine.yml` and `tests-outerloop.yml` carry **independent** shared `paths:` lists that must stay in sync. | Editing one → edit the other identically (each also lists itself). The only acceptable diff between their lists is the self-entry. (COPILOT INSTRUCTIONS comment at top of both files) |
638
638
| Two-dot `git diff base..head` reports files changed on **base** since branch-point as PR changes; three-dot `base...head` is merge-base correct. | Grep workflows/scripts for `git diff --name-only` — prefer three-dot for "files this PR changed". (#17220) |
639
-
| Editing `eng/testing/github-ci-trigger-patterns.txt` itself is a skippable change, so a typo there **won't** be caught by CI. | Validate new globs by hand against the action's conversion rules; consider temporarily removing the file's self-skip to force one validating CI run. |
639
+
| Editing `eng/github-ci/ci-skip-entirely-patterns.txt` itself is a skippable change, so a typo there **won't** be caught by CI. | Validate new globs by hand against the action's conversion rules; consider temporarily removing the file's self-skip to force one validating CI run. |
Copy file name to clipboardExpand all lines: .github/actions/enumerate-tests/action.yml
+76-3Lines changed: 76 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,22 @@ inputs:
6
6
type: string
7
7
default: ''
8
8
description: 'Additional MSBuild arguments passed to the test matrix generation step (e.g., /p:IncludeTemplateTests=true /p:OnlyDeploymentTests=true)'
9
+
checkout:
10
+
required: false
11
+
default: 'true'
12
+
description: 'Whether to check out the repo. Set false when the caller has already checked out (e.g. a prior select-tests step in the same job whose working tree must be preserved).'
13
+
restore:
14
+
required: false
15
+
default: 'true'
16
+
description: 'Whether to set up .NET, bootstrap the Arcade toolset, and restore the class-mode split test projects. Set false when the caller has already restored in the same job.'
17
+
setupDotNet:
18
+
required: false
19
+
default: 'true'
20
+
description: 'Whether to run actions/setup-dotnet. Set false when the caller has already installed the SDK in the same job (e.g. via dotnet.sh). Only consulted when restore is true; global.json declares tools.runtimes, so Arcade installs the SDK into repo-local .dotnet regardless and a system SDK is never read.'
21
+
beforeBuildPropsPath:
22
+
required: false
23
+
default: ''
24
+
description: 'Path to an OverrideProjectToBuild props file (imported by eng/Build.props via $(BeforeBuildPropsPath)) that restricts the -test build, and thus the enumeration, to a subset of test projects. Empty enumerates everything.'
9
25
10
26
# Output format: JSON with structure {"include": [{...}, ...]}
0 commit comments