Skip to content

ci: run the AOT smoke tests in CI - #904

Merged
vbreuss merged 1 commit into
mainfrom
ci/aot-smoke-tests
Oct 18, 2026
Merged

vbreuss merged 1 commit into
mainfrom
ci/aot-smoke-tests

Conversation

@vbreuss

@vbreuss vbreuss commented Oct 18, 2026

Copy link
Copy Markdown
Member

Mockolate claims Native AOT and trimming support, but most of the code that runs in a test is generated into the consumer's assembly, which the library's analyzers never see. The only check was a test app that nothing published or ran and that asserted nothing. The app now runs one check per main feature and fails with exit code 1, and the new AotSmokeTests target runs it under the JIT, publishes it with Native AOT and runs the published executable on Ubuntu, Windows and macOS. Pushing a release waits for it.

  • Compiler, trim and AOT warnings fail the app's build and publish.

Mockolate claims Native AOT and trimming support, but most of the code that runs in a test is generated into the consumer's assembly, which the library's analyzers never see. The only check was a test app that nothing published or ran and that asserted nothing. The app now runs one check per main feature and fails with exit code 1, and the new `AotSmokeTests` target runs it under the JIT, publishes it with Native AOT and runs the published executable on Ubuntu, Windows and macOS. Pushing a release waits for it.

- Compiler, trim and AOT warnings fail the app's build and publish.
@vbreuss vbreuss self-assigned this Oct 18, 2026
Copilot AI balanced review requested due to automatic review settings October 18, 2026 17:25

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@vbreuss
vbreuss enabled auto-merge (squash) October 18, 2026 17:26
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
3 New issues
0.0% Coverage on New Code (required ≥ 50%)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@github-actions

Copy link
Copy Markdown

Test Results

    24 files      24 suites   20m 38s ⏱️
 4 514 tests  4 514 ✅ 0 💤 0 ❌
28 680 runs  28 680 ✅ 0 💤 0 ❌

Results for commit a81d37a.

@vbreuss
vbreuss merged commit 637bd34 into main Oct 18, 2026
20 of 21 checks passed
@vbreuss
vbreuss deleted the ci/aot-smoke-tests branch October 18, 2026 20:02
@github-actions

Copy link
Copy Markdown

👽 Mutation Results

Mutation testing badge

Mockolate

Details
File Score Killed Survived Timeout No Coverage Ignored Compile Errors Runtime Errors Total Detected Total Undetected Total Mutants

The final mutation score is NaN%

Coverage Thresholds: high:80 low:60 break:0

@github-actions

Copy link
Copy Markdown

🚀 Benchmark Results

Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.303
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3

Job=InProcess Toolchain=InProcessEmitToolchain IterationCount=15
LaunchCount=1 WarmupCount=10

Method N Mean Error StdDev Ratio Allocated Alloc Ratio
baseline* 1 377.9 ns 10.49 ns 9.81 ns 0.65 1.93 KB 1.00
Mockolate 1 582.0 ns 11.51 ns 10.77 ns 1.00 1.93 KB 1.00
Imposter 1 639.5 ns 15.48 ns 14.48 ns 1.10 3.96 KB 2.05
TUnitMocks 1 517.8 ns 7.83 ns 7.32 ns 0.89 2.02 KB 1.05
Moq 1 187,007.1 ns 2,669.06 ns 2,496.64 ns 321.41 14.58 KB 7.55
NSubstitute 1 6,907.1 ns 92.42 ns 86.45 ns 11.87 9.12 KB 4.72
FakeItEasy 1 6,503.7 ns 39.39 ns 34.92 ns 11.18 8.05 KB 4.17
baseline* 10 684.1 ns 19.95 ns 18.66 ns 0.94 2.14 KB 1.00
Mockolate 10 729.0 ns 7.88 ns 7.37 ns 1.00 2.14 KB 1.00
Imposter 10 1,051.3 ns 27.86 ns 26.06 ns 1.44 4.8 KB 2.24
TUnitMocks 10 1,495.2 ns 18.76 ns 17.55 ns 2.05 3.73 KB 1.74
Moq 10 191,116.3 ns 923.17 ns 863.53 ns 262.20 18.48 KB 8.63
NSubstitute 10 9,614.3 ns 37.70 ns 33.42 ns 13.19 12.07 KB 5.64
FakeItEasy 10 10,309.2 ns 91.74 ns 81.32 ns 14.14 15.42 KB 7.20
Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 9V74 2.60GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.303
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v4

Job=InProcess Toolchain=InProcessEmitToolchain IterationCount=15
LaunchCount=1 WarmupCount=10

Event Mean Error StdDev Ratio Allocated Alloc Ratio
baseline* 169.63 ns 4.339 ns 4.059 ns 0.49 1.7 KB 1.00
Mockolate 346.1 ns 3.74 ns 3.50 ns 1.00 1.7 KB 1.00
Imposter 697.4 ns 15.97 ns 14.16 ns 2.02 7.18 KB 4.22
TUnitMocks 139.6 ns 3.79 ns 3.54 ns 0.40 1.34 KB 0.79
Moq 10,702.6 ns 69.56 ns 54.31 ns 30.93 12.51 KB 7.34
NSubstitute 4,147.0 ns 26.87 ns 23.82 ns 11.98 9.05 KB 5.31
FakeItEasy 186,214.6 ns 726.58 ns 644.09 ns 538.10 15.26 KB 8.96
Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 3.03GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.303
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3

Job=InProcess Toolchain=InProcessEmitToolchain IterationCount=15
LaunchCount=1 WarmupCount=10

Callback Mean Error StdDev Ratio Allocated Alloc Ratio
baseline* 215.7 ns 5.42 ns 4.81 ns 0.70 1.57 KB 1.00
Mockolate 310.3 ns 8.57 ns 8.02 ns 1.00 1.57 KB 1.00
Imposter 417.2 ns 3.07 ns 2.87 ns 1.35 2.37 KB 1.51
TUnitMocks 487.3 ns 2.46 ns 2.05 ns 1.57 2 KB 1.27
Moq 98,570.7 ns 343.41 ns 321.22 ns 317.88 8.99 KB 5.73
NSubstitute 4,865.6 ns 31.42 ns 29.39 ns 15.69 7.71 KB 4.91
FakeItEasy 4,809.3 ns 15.92 ns 14.11 ns 15.51 6.81 KB 4.33
Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.303
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3

Job=InProcess Toolchain=InProcessEmitToolchain IterationCount=15
LaunchCount=1 WarmupCount=10

Indexer N Mean Error StdDev Ratio Allocated Alloc Ratio
baseline* 1 921.1 ns 22.93 ns 21.44 ns 1.02 3.77 KB 1.00
Mockolate 1 900.8 ns 11.24 ns 9.96 ns 1.00 3.77 KB 1.00
Imposter 1 794.6 ns 10.91 ns 10.21 ns 0.88 4.99 KB 1.33
Moq 1 216,910.4 ns 1,313.51 ns 1,096.84 ns 240.84 20.53 KB 5.45
NSubstitute 1 10,399.3 ns 116.33 ns 108.81 ns 11.55 12.78 KB 3.39
FakeItEasy 1 12,041.0 ns 70.89 ns 66.31 ns 13.37 13.63 KB 3.62
baseline* 10 2,396.3 ns 12.49 ns 11.68 ns 0.98 4.82 KB 1.00
Mockolate 10 2,450.4 ns 18.90 ns 17.68 ns 1.00 4.82 KB 1.00
Imposter 10 1,525.1 ns 11.17 ns 9.33 ns 0.62 6.47 KB 1.34
Moq 10 228,114.0 ns 832.76 ns 778.96 ns 93.10 30.05 KB 6.23
NSubstitute 10 24,520.6 ns 96.96 ns 80.97 ns 10.01 25.58 KB 5.31
FakeItEasy 10 25,155.0 ns 208.18 ns 184.54 ns 10.27 32.97 KB 6.84
Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.303
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3

Job=InProcess Toolchain=InProcessEmitToolchain IterationCount=15
LaunchCount=1 WarmupCount=10

CreateMock Mean Error StdDev Ratio Allocated Alloc Ratio
baseline* 20.91 ns 1.009 ns 0.944 ns 1.05 160 B 1.00
Mockolate 19.95 ns 0.976 ns 0.913 ns 1.00 160 B 1.00
Imposter 299.38 ns 11.625 ns 10.874 ns 15.04 2240 B 14.00
TUnitMocks 38.68 ns 1.123 ns 1.051 ns 1.94 200 B 1.25
Moq 1,538.43 ns 8.520 ns 7.115 ns 77.28 2096 B 13.10
NSubstitute 2,011.98 ns 11.438 ns 10.139 ns 101.07 5048 B 31.55
FakeItEasy 1,891.83 ns 26.410 ns 24.704 ns 95.03 2763 B 17.27
Details

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 2.45GHz, 1 CPU, 4 logical and 2 physical cores
.NET SDK 10.0.303
[Host] : .NET 10.0.13 (10.0.13, 10.0.1326.50504), X64 RyuJIT x86-64-v3

Job=InProcess Toolchain=InProcessEmitToolchain IterationCount=15
LaunchCount=1 WarmupCount=10

Property N Mean Error StdDev Ratio Allocated Alloc Ratio
baseline* 1 593.3 ns 11.87 ns 11.10 ns 1.06 2.41 KB 1.00
Mockolate 1 560.1 ns 14.85 ns 13.89 ns 1.00 2.41 KB 1.00
Imposter 1 452.1 ns 10.47 ns 9.80 ns 0.81 2.98 KB 1.23
TUnitMocks 1 514.9 ns 3.56 ns 3.33 ns 0.92 1.64 KB 0.68
Moq 1 11,841.3 ns 80.39 ns 71.27 ns 21.15 10.39 KB 4.30
NSubstitute 1 8,067.9 ns 46.71 ns 43.69 ns 14.41 11.45 KB 4.74
FakeItEasy 1 8,764.5 ns 83.04 ns 69.34 ns 15.66 11.24 KB 4.66
baseline* 10 959.2 ns 15.07 ns 14.09 ns 0.88 2.91 KB 1.00
Mockolate 10 1,095.9 ns 6.11 ns 5.71 ns 1.00 2.91 KB 1.00
Imposter 10 684.5 ns 6.20 ns 5.50 ns 0.62 3.26 KB 1.12
TUnitMocks 10 1,672.6 ns 10.00 ns 8.87 ns 1.53 3.94 KB 1.35
Moq 10 19,407.3 ns 247.89 ns 219.75 ns 17.71 18.28 KB 6.29
NSubstitute 10 18,346.9 ns 179.86 ns 168.24 ns 16.74 21.08 KB 7.25
FakeItEasy 10 20,856.9 ns 110.39 ns 103.26 ns 19.03 30.81 KB 10.60

baseline* rows show the corresponding Mockolate benchmark from the most recent successful main branch build with results, for regression comparison.

github-actions Bot added a commit that referenced this pull request Oct 19, 2026
github-actions Bot added a commit that referenced this pull request Oct 19, 2026
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.

2 participants