Skip to content

fix(aspire): publish TUnit.Aspire.Core package (#6246)#6247

Merged
thomhurst merged 1 commit into
mainfrom
fix/6246-publish-aspire-core
Jun 14, 2026
Merged

fix(aspire): publish TUnit.Aspire.Core package (#6246)#6247
thomhurst merged 1 commit into
mainfrom
fix/6246-publish-aspire-core

Conversation

@thomhurst

Copy link
Copy Markdown
Owner

Fixes #6246

Problem

TUnit.Aspire 1.55.0 fails to restore:

<PackageReference Include="TUnit.Aspire" Version="1.55.0" />

Root cause

PR #6243 split TUnit.Aspire.Core out of TUnit.Aspire and made the
TUnit.Aspire metapackage ProjectReference it — so the published
TUnit.Aspire.nupkg carries a <dependency> on TUnit.Aspire.Core.

But GetPackageProjectsModule (the explicit allowlist of projects the
pipeline packs and pushes to NuGet) was never updated to include
TUnit.Aspire.Core. The metapackage therefore shipped a dependency on a
package that doesn't exist on NuGet → restore 404.

The earlier TUnit.AspNetCore / TUnit.AspNetCore.Core split (which this
mirrored) correctly lists both projects; Aspire only listed the
metapackage.

Fix

Add Sourcy.DotNet.Projects.TUnit_Aspire_Core to the pack/push list.
Verified TUnit.Pipeline builds (the Sourcy-generated symbol resolves).

PR #6243 split TUnit.Aspire.Core out and made the TUnit.Aspire
metapackage depend on it, but TUnit.Aspire.Core was never added to
GetPackageProjectsModule's pack/push allowlist. So TUnit.Aspire 1.55.0
shipped a dependency on a package that was never published, breaking
restore.

Add TUnit_Aspire_Core to the list, mirroring the TUnit.AspNetCore /
TUnit.AspNetCore.Core split which lists both.
@thomhurst thomhurst merged commit 27c530b into main Jun 14, 2026
11 of 12 checks passed
@thomhurst thomhurst deleted the fix/6246-publish-aspire-core branch June 14, 2026 19:13
@claude

claude Bot commented Jun 14, 2026

Copy link
Copy Markdown
Contributor

Code Review

Status: LGTM — minimal, correct hotfix for a publish-time regression.


Overview

This PR fixes a NuGet restore failure caused by PR #6243 splitting TUnit.Aspire.Core out of TUnit.Aspire without adding the new project to the pipeline's publish allowlist. The metapackage shipped a dependency on a package that didn't exist on NuGet, causing restore 404s for consumers.


Change Analysis

File: TUnit.Pipeline/Modules/GetPackageProjectsModule.cs (+1 line)

The fix adds Sourcy.DotNet.Projects.TUnit_Aspire_Core to the explicit allowlist, directly mirroring the pre-existing TUnit_AspNetCore / TUnit_AspNetCore_Core pair — which is exactly the right pattern:

Sourcy.DotNet.Projects.TUnit_AspNetCore,
Sourcy.DotNet.Projects.TUnit_AspNetCore_Core,
Sourcy.DotNet.Projects.TUnit_Aspire,
Sourcy.DotNet.Projects.TUnit_Aspire_Core,  // <-- added

The ordering is logical and consistent with the existing convention.


Correctness

  • Root cause is correctly identified: the metapackage declares a <dependency> on TUnit.Aspire.Core but the core package was never pushed.
  • The fix is minimal and targeted — touching only the one line responsible.
  • The pattern matches how the identical AspNetCore split was handled, reducing risk of error.

Concerns

None. This is a clean, necessary fix.


Suggestion (for future splits)

Given that this omission has now happened twice (once for AspNetCore, caught; once for Aspire, shipped), it may be worth adding a CI check that validates every ProjectReference in a metapackage has a corresponding entry in GetPackageProjectsModule. Something like:

// Hypothetical guard in the pipeline: assert that all
// ProjectReference targets of metapackages are in the pack list

This would catch the pattern at PR time rather than post-release. Not blocking for this fix, but worth a follow-up issue.


Overall: Correct, well-scoped fix with a clear PR description explaining root cause and rationale. No issues found.

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@claude claude Bot mentioned this pull request Jun 14, 2026
1 task
This was referenced Jun 14, 2026
github-actions Bot pushed a commit to BenjaminMichaelis/TrxLib that referenced this pull request Jun 15, 2026
Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.51.0 to
1.55.2.

<details>
<summary>Release notes</summary>

_Sourced from [TUnit's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.55.2

<!-- Release notes generated using configuration in .github/release.yml
at v1.55.2 -->

## What's Changed
### Other Changes
* fix(aspire): publish TUnit.Aspire.Core package (#​6246) by @​thomhurst
in thomhurst/TUnit#6247
### Dependencies
* chore(deps): update tunit to 1.55.0 by @​thomhurst in
thomhurst/TUnit#6245


**Full Changelog**:
thomhurst/TUnit@v1.55.0...v1.55.2

## 1.55.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.55.0 -->

## What's Changed
### Other Changes
* feat(aspire): add TUnit.Aspire.Core without TUnit metapackage
dependency (#​5471) by @​thomhurst in
thomhurst/TUnit#6243
* fix(analyzers): scope TUnit0031 async-void rule to tests and hooks
(#​6190) by @​thomhurst in thomhurst/TUnit#6244
### Dependencies
* chore(deps): update dependency streamjsonrpc to 2.25.28 by @​thomhurst
in thomhurst/TUnit#6232
* chore(deps): update tunit to 1.54.0 by @​thomhurst in
thomhurst/TUnit#6233
* chore(deps): bump joi from 17.13.3 to 17.13.4 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6234
* chore(deps): update dependency polyfill to 10.9.0 by @​thomhurst in
thomhurst/TUnit#6238
* chore(deps): update _tunitpolyfillversion to 10.9.0 by @​thomhurst in
thomhurst/TUnit#6237
* chore(deps): update dependency polyfill to 10.10.0 by @​thomhurst in
thomhurst/TUnit#6242
* chore(deps): update _tunitpolyfillversion to 10.10.0 by @​thomhurst in
thomhurst/TUnit#6241


**Full Changelog**:
thomhurst/TUnit@v1.54.0...v1.55.0

## 1.54.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.54.0 -->

## What's Changed
### Other Changes
* Generate collection-shape drill-in overloads (#​6185) by @​thomhurst
in thomhurst/TUnit#6218
* feat(mocks): setup/verify on secondary interfaces of multi-type mocks
by @​thomhurst in thomhurst/TUnit#6230
* perf: reduce allocations in source-gen test building hot paths by
@​thomhurst in thomhurst/TUnit#6228
* perf: shrink generated TestEntry builder IL via shared TUnit.Core
factory helpers by @​thomhurst in
thomhurst/TUnit#6231
### Dependencies
* chore(deps): update tunit to 1.53.0 by @​thomhurst in
thomhurst/TUnit#6199
* chore(deps): update verify to 31.19.1 by @​thomhurst in
thomhurst/TUnit#6200
* chore(deps): update dependency messagepack to 3.1.7 by @​thomhurst in
thomhurst/TUnit#6203
* chore(deps): update dependency fsharp.core to 10.1.301 by @​thomhurst
in thomhurst/TUnit#6202
* chore(deps): update dependency microsoft.entityframeworkcore to 10.0.9
by @​thomhurst in thomhurst/TUnit#6205
* chore(deps): update dependency dotnet-sdk to v10.0.301 by @​thomhurst
in thomhurst/TUnit#6204
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.301 by @​thomhurst in
thomhurst/TUnit#6206
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.301 by
@​thomhurst in thomhurst/TUnit#6207
* chore(deps): update microsoft.aspnetcore to 10.0.9 by @​thomhurst in
thomhurst/TUnit#6209
* chore(deps): update dependency system.commandline to 2.0.9 by
@​thomhurst in thomhurst/TUnit#6208
* chore(deps): update microsoft.extensions by @​thomhurst in
thomhurst/TUnit#6211
* chore(deps): update dependency dompurify to v3.4.9 by @​thomhurst in
thomhurst/TUnit#6213
* chore(deps): bump shell-quote from 1.8.3 to 1.8.4 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6210
* chore(deps): update dependency polly to 8.7.0 by @​thomhurst in
thomhurst/TUnit#6214
* chore(deps): update dependency microsoft.net.stringtools to 18.7.1 by
@​thomhurst in thomhurst/TUnit#6215
* chore(deps): update microsoft.build to 18.7.1 by @​thomhurst in
thomhurst/TUnit#6216
* chore(deps): update opentelemetry to 1.16.0 by @​thomhurst in
thomhurst/TUnit#6217
* chore(deps): update dependency dompurify to v3.4.10 by @​thomhurst in
thomhurst/TUnit#6229


**Full Changelog**:
thomhurst/TUnit@v1.53.0...v1.54.0

## 1.53.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.53.0 -->

## What's Changed
### Other Changes
* feat(assertions): return typed value from IsAssignableTo<T> (#​6184)
by @​thomhurst in thomhurst/TUnit#6187
* fix: stop doubling backslashes in source-gen emitted FilePath (breaks
HTML report source links) by @​thomhurst in
thomhurst/TUnit#6193
* feat(assertions): add ContainsKey().And.Value drill-in for
dictionaries (#​6185) by @​thomhurst in
thomhurst/TUnit#6188
* fix(tests): snapshot ExecutionLog under lock to fix parallel race by
@​thomhurst in thomhurst/TUnit#6194
* fix(engine): run lifecycle hooks before test class construction
(#​6192) by @​thomhurst in thomhurst/TUnit#6195
* feat(assertions): inference-friendly pinned overload for covariant
[AssertionExtension] with own generic (#​5922) by @​thomhurst in
thomhurst/TUnit#6196
* feat: add DeferEnumeration to defer data-source expansion to runtime
(#​5833) by @​thomhurst in thomhurst/TUnit#6197
### Dependencies
* chore(deps): update tunit to 1.51.0 by @​thomhurst in
thomhurst/TUnit#6186
* chore(deps): update microsoft.testing to 18.8.0 by @​thomhurst in
thomhurst/TUnit#6191
* chore(deps): update aspire to 13.4.3 by @​thomhurst in
thomhurst/TUnit#6198


**Full Changelog**:
thomhurst/TUnit@v1.51.0...v1.53.0

Commits viewable in [compare
view](thomhurst/TUnit@v1.51.0...v1.55.2).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=TUnit&package-manager=nuget&previous-version=1.51.0&new-version=1.55.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to IntelliTect/CodingGuidelines that referenced this pull request Jun 15, 2026
Updated [TUnit.Core](https://github.com/thomhurst/TUnit) from 1.51.0 to
1.55.2.

<details>
<summary>Release notes</summary>

_Sourced from [TUnit.Core's
releases](https://github.com/thomhurst/TUnit/releases)._

## 1.55.2

<!-- Release notes generated using configuration in .github/release.yml
at v1.55.2 -->

## What's Changed
### Other Changes
* fix(aspire): publish TUnit.Aspire.Core package (#​6246) by @​thomhurst
in thomhurst/TUnit#6247
### Dependencies
* chore(deps): update tunit to 1.55.0 by @​thomhurst in
thomhurst/TUnit#6245


**Full Changelog**:
thomhurst/TUnit@v1.55.0...v1.55.2

## 1.55.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.55.0 -->

## What's Changed
### Other Changes
* feat(aspire): add TUnit.Aspire.Core without TUnit metapackage
dependency (#​5471) by @​thomhurst in
thomhurst/TUnit#6243
* fix(analyzers): scope TUnit0031 async-void rule to tests and hooks
(#​6190) by @​thomhurst in thomhurst/TUnit#6244
### Dependencies
* chore(deps): update dependency streamjsonrpc to 2.25.28 by @​thomhurst
in thomhurst/TUnit#6232
* chore(deps): update tunit to 1.54.0 by @​thomhurst in
thomhurst/TUnit#6233
* chore(deps): bump joi from 17.13.3 to 17.13.4 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6234
* chore(deps): update dependency polyfill to 10.9.0 by @​thomhurst in
thomhurst/TUnit#6238
* chore(deps): update _tunitpolyfillversion to 10.9.0 by @​thomhurst in
thomhurst/TUnit#6237
* chore(deps): update dependency polyfill to 10.10.0 by @​thomhurst in
thomhurst/TUnit#6242
* chore(deps): update _tunitpolyfillversion to 10.10.0 by @​thomhurst in
thomhurst/TUnit#6241


**Full Changelog**:
thomhurst/TUnit@v1.54.0...v1.55.0

## 1.54.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.54.0 -->

## What's Changed
### Other Changes
* Generate collection-shape drill-in overloads (#​6185) by @​thomhurst
in thomhurst/TUnit#6218
* feat(mocks): setup/verify on secondary interfaces of multi-type mocks
by @​thomhurst in thomhurst/TUnit#6230
* perf: reduce allocations in source-gen test building hot paths by
@​thomhurst in thomhurst/TUnit#6228
* perf: shrink generated TestEntry builder IL via shared TUnit.Core
factory helpers by @​thomhurst in
thomhurst/TUnit#6231
### Dependencies
* chore(deps): update tunit to 1.53.0 by @​thomhurst in
thomhurst/TUnit#6199
* chore(deps): update verify to 31.19.1 by @​thomhurst in
thomhurst/TUnit#6200
* chore(deps): update dependency messagepack to 3.1.7 by @​thomhurst in
thomhurst/TUnit#6203
* chore(deps): update dependency fsharp.core to 10.1.301 by @​thomhurst
in thomhurst/TUnit#6202
* chore(deps): update dependency microsoft.entityframeworkcore to 10.0.9
by @​thomhurst in thomhurst/TUnit#6205
* chore(deps): update dependency dotnet-sdk to v10.0.301 by @​thomhurst
in thomhurst/TUnit#6204
* chore(deps): update dependency microsoft.templateengine.authoring.cli
to v10.0.301 by @​thomhurst in
thomhurst/TUnit#6206
* chore(deps): update dependency
microsoft.templateengine.authoring.templateverifier to 10.0.301 by
@​thomhurst in thomhurst/TUnit#6207
* chore(deps): update microsoft.aspnetcore to 10.0.9 by @​thomhurst in
thomhurst/TUnit#6209
* chore(deps): update dependency system.commandline to 2.0.9 by
@​thomhurst in thomhurst/TUnit#6208
* chore(deps): update microsoft.extensions by @​thomhurst in
thomhurst/TUnit#6211
* chore(deps): update dependency dompurify to v3.4.9 by @​thomhurst in
thomhurst/TUnit#6213
* chore(deps): bump shell-quote from 1.8.3 to 1.8.4 in /docs by
@​dependabot[bot] in thomhurst/TUnit#6210
* chore(deps): update dependency polly to 8.7.0 by @​thomhurst in
thomhurst/TUnit#6214
* chore(deps): update dependency microsoft.net.stringtools to 18.7.1 by
@​thomhurst in thomhurst/TUnit#6215
* chore(deps): update microsoft.build to 18.7.1 by @​thomhurst in
thomhurst/TUnit#6216
* chore(deps): update opentelemetry to 1.16.0 by @​thomhurst in
thomhurst/TUnit#6217
* chore(deps): update dependency dompurify to v3.4.10 by @​thomhurst in
thomhurst/TUnit#6229


**Full Changelog**:
thomhurst/TUnit@v1.53.0...v1.54.0

## 1.53.0

<!-- Release notes generated using configuration in .github/release.yml
at v1.53.0 -->

## What's Changed
### Other Changes
* feat(assertions): return typed value from IsAssignableTo<T> (#​6184)
by @​thomhurst in thomhurst/TUnit#6187
* fix: stop doubling backslashes in source-gen emitted FilePath (breaks
HTML report source links) by @​thomhurst in
thomhurst/TUnit#6193
* feat(assertions): add ContainsKey().And.Value drill-in for
dictionaries (#​6185) by @​thomhurst in
thomhurst/TUnit#6188
* fix(tests): snapshot ExecutionLog under lock to fix parallel race by
@​thomhurst in thomhurst/TUnit#6194
* fix(engine): run lifecycle hooks before test class construction
(#​6192) by @​thomhurst in thomhurst/TUnit#6195
* feat(assertions): inference-friendly pinned overload for covariant
[AssertionExtension] with own generic (#​5922) by @​thomhurst in
thomhurst/TUnit#6196
* feat: add DeferEnumeration to defer data-source expansion to runtime
(#​5833) by @​thomhurst in thomhurst/TUnit#6197
### Dependencies
* chore(deps): update tunit to 1.51.0 by @​thomhurst in
thomhurst/TUnit#6186
* chore(deps): update microsoft.testing to 18.8.0 by @​thomhurst in
thomhurst/TUnit#6191
* chore(deps): update aspire to 13.4.3 by @​thomhurst in
thomhurst/TUnit#6198


**Full Changelog**:
thomhurst/TUnit@v1.51.0...v1.53.0

Commits viewable in [compare
view](thomhurst/TUnit@v1.51.0...v1.55.2).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=TUnit.Core&package-manager=nuget&previous-version=1.51.0&new-version=1.55.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Tunit.Aspire 1.55.0 breaks build due to TUnit.Aspire.Core not being published to NuGet

1 participant