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
{{ message }}
Repository navigation
Commit 384a2e1
Browse filesBrowse the repository at this point in the historyBrowse files
The test command is the one of the CI Debug leg: it runs every test except the package consumption tests
29
30
(`Category=PackageConsumption`) and the live qualification tests (`Category=LiveQualification`); the Release build
30
-
compiles the configuration that is packed. A skipped test fails the run: an environment-dependent test is fixed or
31
+
also builds the submodule graph. Normal PR CI tests both configurations without package consumption. A skipped test fails the run: an environment-dependent test is fixed or
31
32
deleted, never skipped. The live qualification tests start a sandboxed Cheat Engine, so every command here, like CI,
32
33
excludes them by trait; run without that filter, they fail with the instructions of their opt-in (see
33
34
[Live qualification](#live-qualification)).
34
35
35
-
The package consumption tests consume the exact packages you pack, as the CI Release leg does. Run them as well when a
36
-
change reaches what is packed: a project file, `eng/`, `Directory.Build.*`, `Directory.Packages.props`, `templates/`,
37
-
a packed README, or a public API that the template or a README snippet uses. The Native AOT probe completes the set:
36
+
NuGet and package-consumption tests belong to production release validation. The release workflow enables
37
+
`production-packages` and requires the exact packages it packs to pass consumption checks. Before preparing a release,
38
+
update the separate SDK NuGet pin to a published version containing every API used by Client, then validate this graph:
|`Build and test (Debug)`|`windows-2025`| Locked restore, build, one `dotnet test --solution` run with coverage (package consumption and live qualification tests excluded by trait) |
134
-
|`Build and test (Release)`|`windows-2025`| Locked restore, build, pack (exact package set, embedded SBOM), benchmark discovery, one test run against the packed packages (live qualification tests excluded by trait)|
143
+
|`Build and test (Release)`|`windows-2025`| Locked restore, source build, benchmark discovery and portable tests. Production releases additionally pack and validate the exact package set and embedded SBOM.|
135
144
|`Native AOT publication probe`|`windows-2025`| Publishes and runs `tests/CheatEngine.Client.AotProbe`: trim and Native AOT compatibility of the Client graph, not a Cheat Engine load |
136
145
|`Sonar / Analyze`|`windows-2025`| SonarQube Cloud CI-based analysis with the Debug coverage; waits for the quality gate except on pushes to `main`|
137
146
|`Lint`|`ubuntu-24.04`| actionlint and the offline zizmor audits over the workflows |
138
-
|`Format`|`ubuntu-24.04`|`dotnet format whitespace . --folder --verify-no-changes --exclude artifacts`|
147
+
|`Format`|`ubuntu-24.04`|`dotnet format whitespace . --folder --verify-no-changes --exclude artifacts externals`|
139
148
|`Dependency review`|`ubuntu-24.04`| On pull requests, reviews dependency changes against `.github/dependency-review-config.yml`; a notice on other events |
Text="Source SDK mode builds and tests the pinned submodule. For production packaging, restore, build and pack with CheatEngineSdkSourceMode=false to validate the reviewed NuGet dependency graph."/>
20
+
</Target>
2
21
<!-- Imported after the project body and the SDK targets, so conditions here see final property values. -->
<ErrorCondition="'$(MSBuildProjectName)' == 'CheatEngine.Client' and '$(_CheatEngineClientProjectReferences)' != 'CheatEngine.Client.Fluent;CheatEngine.Client.Hosting'"
70
89
Code="CHEATENGINECLIENT9015"
71
90
Text="CheatEngine.Client must reference only CheatEngine.Client.Fluent and CheatEngine.Client.Hosting."/>
72
-
<ErrorCondition="('$(MSBuildProjectName)' == 'CheatEngine.Client.Abstractions' or '$(MSBuildProjectName)' == 'CheatEngine.Client.Core' or '$(MSBuildProjectName)' == 'CheatEngine.Client.Hosting') and '@(_CheatEngineClientSdkRangeReference)' == ''"
91
+
<ErrorCondition="'$(CheatEngineSdkSourceMode)' != 'true' and ('$(MSBuildProjectName)' == 'CheatEngine.Client.Abstractions' or '$(MSBuildProjectName)' == 'CheatEngine.Client.Core' or '$(MSBuildProjectName)' == 'CheatEngine.Client.Hosting') and '@(_CheatEngineClientSdkRangeReference)' == ''"
73
92
Code="CHEATENGINECLIENT9016"
74
93
Text="SDK-facing published packages must declare CheatEngine.SDK as $(CheatEngineSdkVersionRange), the range of eng/CheatEngineSdk.props."/>
75
94
</Target>
@@ -200,7 +219,7 @@
200
219
TypeLoadException, which neither package validation nor the public API baselines can see. The seven packages share
201
220
one version (CHEATENGINECLIENT9019), so each one requires exactly that version of every Client package it depends on.
202
221
203
-
The .NET SDK 10.0.401 pack targets (NuGet.Build.Tasks.Pack.targets, internal and undocumented; eng/CheatEngineSdk.props
222
+
The .NET SDK 10.0.402 pack targets (NuGet.Build.Tasks.Pack.targets, internal and undocumented; eng/CheatEngineSdk.props
204
223
asks for a re-check after a .NET SDK bump): GenerateNuspec depends on _GetProjectReferenceVersions, which reads the
205
224
project references of project.assets.json, calls _GetProjectVersion on each and collects the results as
206
225
_ProjectReferencesWithVersions items, whose ProjectVersion metadata is the referenced project's $(PackageVersion).
0 commit comments