Skip to content

Test maintained recipe scripts and reject unresolved latest versions - #135

Merged
oznetmaster merged 6 commits into
mainfrom
issue-132
Nov 2, 2026
Merged

oznetmaster merged 6 commits into
mainfrom
issue-132

Conversation

@oznetmaster

@oznetmaster oznetmaster commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

A latest-version lookup with no exact package match previously returned the original PackageReference. Verification could then accept an installed package as an unversioned dependency, or retain a previously pinned reference. Throw a diagnostic identifying the requested package and sources instead. Intentional unversioned checks retain their existing behavior.

Add Cake scripts in harness that load recipe/*.cake directly, with controlled feed responses and Cake filesystem/process doubles. A separate smoke target exercises real Cake setup, target execution and package verification against actual temporary files. Its intentional missing-file error is captured and asserted; successful output identifies it as expected.

CI now runs the harness before the existing packaging/publication step. A test failure blocks that step, and XML reports are uploaded with if: always(). Setup explicitly includes .NET 8 to match global.json, alongside the existing .NET 10 SDK. Charlie's restored triggers, publishing logic, package artifacts and workflow settings are preserved.

Validation on Windows / .NET 8 / Cake 6.3.0:

  • Before the production correction: 40/102 behavior cases pass; 62 expose Dependency check ignores failure to find latest version #130.
  • After correction: 102/102 behavior cases and the smoke case pass.
  • The original implementation also passes from a fresh source archive without Git history or copied build artifacts.
  • The smoke-output follow-up passes without the misleading ERROR: File output.
  • Two isolated mutation checks fail as intended when the expected missing-file failure disappears or reports a different missing file.
  • Parsed workflow checks confirm the harness precedes packaging, has no failure override, uploads reports on failure, and preserves other current-main settings.

Windows/Linux fake environments exercise path forms. Native Linux/macOS and live feed behavior have not been validated by this harness. Bootstrap may fetch declared dependencies, but behavioral cases contact no feeds or hardware. Hosted CI run 41407556455 passed on head 6f66eeb. Downloaded XML reports confirm 102 behavior cases and the smoke case passed. The harness ran before packaging, the expected missing-file diagnostic was handled cleanly, and all 29 packaged recipe scripts match the submitted source. This PR run built a package but published nothing to MyGet.

The production correction, harness, smoke-output follow-up and CI integration are separate commits. Current main is incorporated through a normal merge, preserving the published shared-branch history without a force push.

Fixes #130. First source-harness slice for #132; builds on the workflow restoration in #131.

Prepared by Neil Colvin with assistance from OpenAI Codex.

CharliePoole and others added 6 commits November 1, 2026 10:59
Load maintained recipe scripts directly, control NuGet and filesystem boundaries, and exercise real Cake package verification. Preserve active regressions for issue #130; baseline is 40/102 behavior cases and one passing smoke case.

Co-authored-by: OpenAI Codex <noreply@openai.com>
Fail with the requested package and sources when NuGet returns no exact match. Do not fall back to an unversioned check or an earlier pinned version. All 102 behavior cases and the real Cake smoke case pass.

Fixes #130

Co-authored-by: OpenAI Codex <noreply@openai.com>
Assert the missing-payload exception and its exact file diagnostic using a recording Cake log with the real filesystem. Report expected failure as informational output; unexpected failures still fail the smoke target.

Co-authored-by: OpenAI Codex <noreply@openai.com>
Run the source harness before the existing packaging/publication step and retain XML reports even when tests fail. Install the .NET 8 SDK selected by global.json alongside the existing .NET 10 SDK. Preserve the restored workflow behavior.

Co-authored-by: OpenAI Codex <noreply@openai.com>

Copy link
Copy Markdown
Contributor Author

@CharliePoole, could we move the recipe’s build SDK to .NET 10 as a separate follow-up? .NET 8 reaches end of support on 10 November. I retained it in #135 because the existing global.json selects SDK 8.

An isolated probe changing only that SDK pin passes all 102 behavior cases and the smoke test with SDK 10.0.403. One dependency needs attention before claiming a .NET 10-only toolchain: the pinned GitReleaseManager 0.20.0 has .NET 8/9 payloads.

I suggest updating global.json and SDK setup in both workflows, checking the release-tool dependency, and validating restore, harness execution, packaging and release-tool startup without publishing anything.

This concerns build tooling; it would not change the test runtimes supported by NUnit’s agents. Would you prefer a separate issue/PR after #135, or this migration before merging the branch?

Prepared by Neil Colvin with assistance from OpenAI Codex.

@CharliePoole CharliePoole left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to go. You can merge either before or after switching global.json to use .NET 10.0.

dotnet-version: 10.0.x
dotnet-version: |
8.0.x
10.0.x

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can drop 8.0 here if you update global.json to use 10.0.

@oznetmaster
oznetmaster merged commit b6f47eb into main Nov 2, 2026
2 checks passed
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.

Dependency check ignores failure to find latest version

2 participants