Repository navigation
fix(mocks): report TM006 instead of CS1729 for unsubclassable classes - #6501
Conversation
Greptile SummaryThis PR replaces generated-code constructor failures with a call-site diagnostic for classes that cannot be subclassed.
Confidence Score: 3/5The PR is not yet safe to merge because generated Mock entry-point matching can still apply TM006 to unrelated consumer code. The analyzer continues to identify generated entry points through a spoofable namespace and containing-type suffix, then treats the invocation receiver as a mock target and can emit a compilation-blocking diagnostic. Files Needing Attention: src/TUnit.Mocks.Analyzers/InaccessibleConstructorMockAnalyzer.cs
|
| Filename | Overview |
|---|---|
| src/TUnit.Mocks.Analyzers/InaccessibleConstructorMockAnalyzer.cs | Adds TM006 target resolution and constructor eligibility checks; the previously reported generated-entry identity issue remains unresolved. |
| src/TUnit.Mocks.Analyzers/Rules.cs | Defines the TM006 error descriptor and guidance. |
| src/TUnit.Mocks.SourceGenerator/MockGenerator.cs | Emits only the static mock entry-point stub for classes lacking an accessible constructor. |
| src/TUnit.Mocks.SourceGenerator/Models/MockTypeModel.cs | Adds the model predicate used to identify class targets without discovered constructors. |
| tests/TUnit.Mocks.Analyzers.Tests/InaccessibleConstructorMockAnalyzerTests.cs | Covers inaccessible and chainable constructor cases across the supported mock entry points. |
| tests/TUnit.Mocks.Analyzers.Tests/Verifiers/CSharpAnalyzerVerifier`1.cs | Clarifies cross-assembly accessibility coverage in the verifier documentation. |
Reviews (4): Last reviewed commit: "fix(mocks): report TM006 for the multi-t..." | Re-trigger Greptile
|
To use Codex here, create an environment for this repo. |
|
Claude finished @thomhurst's task in 1m 58s —— View job Tasks
Answer:
|
There was a problem hiding this comment.
Review
Good fix overall — replacing a confusing generated-code CS1729 with a targeted diagnostic at the call site is the right shape for this problem, and the entry-point coverage (Mock.Of<T>(), Mock.Wrap<T>(), generated T.Mock()) plus the sealed/struct double-report guard is well thought through.
One correctness gap and one coverage gap worth addressing before merge:
1. Analyzer's chainability check diverges from the generator's — reintroduces the same failure mode for a narrower case
InaccessibleConstructorMockAnalyzer.IsChainable (src/TUnit.Mocks.Analyzers/InaccessibleConstructorMockAnalyzer.cs:124-139) only checks a constructor's own DeclaredAccessibility + assembly visibility. But the generator's real notion of "usable constructor" — MemberDiscovery.DiscoverConstructors → IsMemberAccessible → AreMemberSignatureTypesAccessible / IsTypeAccessible (src/TUnit.Mocks.SourceGenerator/Discovery/MemberDiscovery.cs:848-876, 553-634) — also requires every constructor parameter type to be accessible from the compilation assembly.
Concretely: a class with a single public constructor whose parameter type is internal in another assembly (a real pattern — some libraries use an internal "capability" parameter to gate public-looking constructors) will:
- Generator side:
DiscoverConstructorsfilters that ctor out (param type inaccessible) →Constructors.Length == 0→LacksAccessibleConstructor == true→ only the static stub is emitted, which forwards toMock.Of<T>(). - Analyzer side:
IsChainablesees apublicctor and returnstrue→ no TM006 is reported. - Runtime:
Mock.Of<T>()finds no registered factory (MockRegistry.TryGetFactoryfails, src/TUnit.Mocks/Mock.cs:70-77) and throwsInvalidOperationException: No mock factory registered for type ....
So for this case the user gets exactly the kind of unclear, disconnected-from-the-call-site failure this PR sets out to eliminate — just moved from a compile-time CS1729 to a runtime exception, with no analyzer warning in between.
This is a structural risk, not just a missed edge case: the analyzer and generator now each hand-maintain their own copy of "is this constructor chainable," and they've already drifted apart on day one. Rather than porting AreMemberSignatureTypesAccessible/IsTypeAccessible into the analyzer as a second copy, it'd be worth extracting the shared predicate (constructor accessibility + parameter-type accessibility) into one place both projects reference — e.g. a small shared source file/project linked into both TUnit.Mocks.Analyzers and TUnit.Mocks.SourceGenerator (both are already netstandard2.0 Roslyn components, so linking a shared .cs file via <Compile Include> costs nothing). That guarantees the two can't silently diverge again the next time either side's logic changes.
2. The primary target scenario (T.Mock()) isn't actually tested against the real generated shape
Generated_Static_Mock_Entry_Point_Reports_TM006 (tests/TUnit.Mocks.Analyzers.Tests/InaccessibleConstructorMockAnalyzerTests.cs:274-306) says in its own comment that the real generated entry point is a C# 14 extension(...) block (confirmed in MockStaticExtensionBuilder.BuildCore, src/TUnit.Mocks.SourceGenerator/Builders/MockStaticExtensionBuilder.cs:100-106), but the test harness's Roslyn version doesn't support extension blocks yet, so the test substitutes a plain static method with a matching name/namespace/staticness instead.
That's a reasonable stopgap, but it means ResolveMockTarget's namespace-based matching (chosen specifically to cope with the "compiler-synthesised nested extension type" shape, per its own comment) is unverified against the actual symbol shape Roslyn produces for extension members — which can differ from a plain static method (synthesized containing/marker types, ReducedFrom, etc.). Since this is the exact path from the original bug report (T.Mock() → CS1729), it'd be worth locking it in with real coverage — e.g. an end-to-end test that runs the actual source generator output through the analyzer, or bumping/adding a second test harness on a newer Roslyn/LangVersion that supports extension syntax — rather than relying on manual verification (per the PR description) staying correct across future refactors.
Nothing else stood out — Rules.cs addition, the sealed/value-type exclusion to avoid double-reporting with TM001/TM002, and the LacksAccessibleConstructor model property all look correct and well-documented.
|
Thanks — finding 1 is a real divergence and is fixed in 2985b13. One correction on the worked example, and a push-back on the extraction. 1. Divergence fixed; the specific repro isn't constructible though. I did try to pin it with the scenario you described — a public constructor whose parameter type is internal in another assembly — and it can't exist: the declaring assembly won't compile it. C# requires a constructor to be no more accessible than its parameter types, so for constructors the parameter-type gate can only fire where the constructor itself is already gated ( 2. On the real What I do have is a real-SDK verification: with the branch built into That's also what drove the namespace-based matching in the first place: matching on Analyzer tests 41 passed, |
I tested both halves of this against the real Azure package. Short answer: it can't unlock mocking, but it can unlock a genuinely useful stub/value-builder — and yes, it's AOT-safe. It doesn't help mocking, for two independent reasons. 1. The blocker is subclassing, not construction. TUnit.Mocks intercepts by emitting a subclass, and every derived constructor must chain to an accessible base constructor. 2. Even with a subclass there'd be nothing to intercept. Reading the metadata for Zero virtual members. A subclass could override nothing, so Where it does pay off. What people actually want from these types is a value to hand back from a mocked [UnsafeAccessor(UnsafeAccessorKind.Constructor)]
static extern QueueRuntimeProperties NewProps(string name);
[UnsafeAccessor(UnsafeAccessorKind.Method, Name = "set_ActiveMessageCount")]
static extern void SetActive(QueueRuntimeProperties props, long value);
var p = NewProps("my-queue");
SetActive(p, 42);
// prints: OK Name=my-queue ActiveMessageCount=42That ran clean against Caveats worth pricing in before committing to it: it needs So I'd frame it as a separate feature — something like |
ReviewRe-reviewed at c5b3c2c (latest commit). Both findings from the previous review round are properly addressed: the analyzer's One new gap worth fixing before merge: TM006 doesn't cover the multi-type
|
A class whose constructors are all private, or internal in another assembly, cannot be subclassed at all — every subclass constructor must chain to a base constructor. The generator emitted the impl regardless, so mocking e.g. Azure.Messaging.ServiceBus.Administration.QueueRuntimeProperties failed with a bare CS1729 pointing into generated code, with nothing to tie it back to the offending call site. Skip generation for such targets (keeping only the static Mock() entry point so the call site still binds) and add TM006, reported at the call site for Mock.Of<T>(), Mock.Wrap<T>() and the generated T.Mock() form. Protected and protected-internal constructors stay chainable, so abstract classes are unaffected. Fixes #6493
… rule Review finding: the analyzer only inspected a constructor's own accessibility, while MemberDiscovery.DiscoverConstructors also requires every parameter type to be reachable. The analyzer now applies the same signature-type rule (arrays, generic arguments and pointers included), so the two cannot report different answers for the same target. Also adds cross-assembly coverage — an internal constructor in a referenced assembly is the actual shape from the report, and the previous tests could only express the same-assembly private case.
Review finding: matching every static Mock() in namespace TUnit.Mocks let a consumer-declared method of that shape draw a compilation-blocking diagnostic. Probed the real symbol shape against Roslyn 4.14 — the generated member's containing type is the synthesised, unnamed extension type, whose own containing type is the *_MockStaticExtension class — and the match now walks out to that class. Verified against a real-SDK build that both entry points still report: Issue6493Repro.cs(16,17): error TM006: ... // NoAccessibleCtorProbe.Mock() Issue6493Repro.cs(17,17): error TM006: ... // Mock.Of<NoAccessibleCtorProbe>() The analyzer-harness test for that path now asserts the negative case it can express; the previous one stood in a plain static method and was pinning the overbroad behaviour.
Of<T1, T2>() through Of<T1, T2, T3, T4>() return Mock<T1>, and MockTypeDiscovery reuses T1's constructors for the multi-type model, so the generator skips generation for the same LacksAccessibleConstructor case. The analyzer only resolved a target for exactly one type argument, so those calls reported nothing and failed at runtime with "No mock factory registered" instead of at the call site.
c5b3c2c to
9c17356
Compare
|
Fixed in 9c17356. The multi-type gap is real — verified end to end rather than taken on the review's word:
On the marker-attribute suggestion for Also rebased onto main to clear the conflict ( |
ReviewRe-reviewed at 9c17356 (latest commit). This addresses the only outstanding gap from the previous round. Multi-type Ran the new test ( No new issues found. The remaining architectural note from the previous round (naming-convention-based detection in Good to merge from my side. |
Updated [Microsoft.Testing.Extensions.CodeCoverage](https://github.com/microsoft/codecoverage) from 18.7.0 to 18.11.2. <details> <summary>Release notes</summary> _Sourced from [Microsoft.Testing.Extensions.CodeCoverage's releases](https://github.com/microsoft/codecoverage/releases)._ No release notes found for this version range. Commits viewable in [compare view](https://github.com/microsoft/codecoverage/commits). </details> Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.45.29 to 1.72.16. <details> <summary>Release notes</summary> _Sourced from [TUnit's releases](https://github.com/thomhurst/TUnit/releases)._ ## 1.72.16 <!-- Release notes generated using configuration in .github/release.yml at v1.72.16 --> ## What's Changed ### Other Changes * docs: add Moq, NSubstitute, and FakeItEasy migration guides for TUnit.Mocks by @thomhurst in https://github.com/thomhurst/TUnit/pull/6951 ### Dependencies * chore(deps): update dependency azure.storage.blobs to 12.30.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6945 * chore(deps): update tunit to 1.72.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6946 * chore(deps): update dependency mockolate to 3.5.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6949 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.72.10...v1.72.16 ## 1.72.10 <!-- Release notes generated using configuration in .github/release.yml at v1.72.10 --> ## What's Changed ### Other Changes * fix(source-gen): adapt ValueTask<T> test results by @zion-sati in https://github.com/thomhurst/TUnit/pull/6930 ### Dependencies * chore(deps): update tunit to 1.72.4 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6941 * chore(deps): update aspire to 13.6.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6940 * chore(deps): update verify to 33.2.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6943 * chore(deps): update dependency awssdk.sqs to 4.0.100.15 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6944 ## New Contributors * @zion-sati made their first contribution in https://github.com/thomhurst/TUnit/pull/6930 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.72.4...v1.72.10 ## 1.72.4 <!-- Release notes generated using configuration in .github/release.yml at v1.72.4 --> ## What's Changed ### Other Changes * fix(source-gen): stop parameter resolver keeping every non-public test-class method (IL2111) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6937 ### Dependencies * chore(deps): update tunit to 1.72.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6934 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.72.0...v1.72.4 ## 1.72.0 <!-- Release notes generated using configuration in .github/release.yml at v1.72.0 --> ## What's Changed ### Other Changes * perf(source-gen): resolve parameter reflection info through a shared runtime helper by @thomhurst in https://github.com/thomhurst/TUnit/pull/6923 * perf(analyzers): trim remaining analyzer hot-path symbol lookups and binds by @thomhurst in https://github.com/thomhurst/TUnit/pull/6928 * perf(mocks): move shared MockCall wrapper plumbing into runtime base classes by @thomhurst in https://github.com/thomhurst/TUnit/pull/6929 * perf(source-gen): close incremental caching gaps in static property and property injection generators by @thomhurst in https://github.com/thomhurst/TUnit/pull/6925 * perf(source-gen): stop InfrastructureGenerator pinning an old Compilation by @thomhurst in https://github.com/thomhurst/TUnit/pull/6926 * perf(assertions-analyzers): cache assertion symbols and cut per-call work by @thomhurst in https://github.com/thomhurst/TUnit/pull/6927 * perf(source-gen): emit hooks per class with direct, non-async bodies by @thomhurst in https://github.com/thomhurst/TUnit/pull/6924 * test: fix flaky ObjectInitializer continuation-thread test by @thomhurst in https://github.com/thomhurst/TUnit/pull/6932 * fix: CI flakes from leaked hook contexts, ActivityCollector race and Repro5700 rendezvous by @thomhurst in https://github.com/thomhurst/TUnit/pull/6933 * fix(aspnetcore): honor WebApplicationFactoryClientOptions in CreateClient by @thomhurst in https://github.com/thomhurst/TUnit/pull/6931 ### Dependencies * chore(deps): update tunit to 1.71.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6920 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.71.0...v1.72.0 ## 1.71.0 <!-- Release notes generated using configuration in .github/release.yml at v1.71.0 --> ## What's Changed ### Other Changes * perf: lighter per-test trace bookkeeping for the HTML report (-12% allocations at 10k tests) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6910 * perf(html-report): parallel report serialization + optimized hot writers (-26% end-of-session time) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6911 * perf: emit source-generated test types after user code (Defender scan 5s → 0.2s at 10k tests) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6908 * perf(source-gen): bound generated test-entry methods (data-driven startup JIT -45%) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6909 * fix: avoid blocking waiting callers during IAsyncInitializer initialization by @Sing303 in https://github.com/thomhurst/TUnit/pull/6906 * perf(analyzers): cut binding and symbol lookups in analyzer hot paths (TUnit.Analyzers -89% on TestProject) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6917 * fix(source-gen): model equality covers every emitted field; infrastructure refreshes on reference changes by @thomhurst in https://github.com/thomhurst/TUnit/pull/6912 * perf(mocks): memoize generator discovery per compilation and decouple emitted source from call-site locations by @thomhurst in https://github.com/thomhurst/TUnit/pull/6913 * fix(packaging): skip the source generator when disabled and replace the broken Polyfill injection by @thomhurst in https://github.com/thomhurst/TUnit/pull/6915 * refactor(analyzers): address review feedback from #6917 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6919 * perf(source-gen): remove whole-compilation scans from static property, property injection and AOT converter generators by @thomhurst in https://github.com/thomhurst/TUnit/pull/6914 * perf(assertions-source-gen): make assertion generators properly incremental by @thomhurst in https://github.com/thomhurst/TUnit/pull/6916 * perf(source-gen): make TestMetadataGenerator pipeline values equatable by @thomhurst in https://github.com/thomhurst/TUnit/pull/6918 ### Dependencies * chore(deps): update dependency polyfill to 11.4.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6900 * chore(deps): update dependency polyfill to 11.4.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6899 * chore(deps): update dependency tunit.aspire to 1.7* by @thomhurst in https://github.com/thomhurst/TUnit/pull/6901 * chore(deps): update tunit to 1.7* by @thomhurst in https://github.com/thomhurst/TUnit/pull/6902 * chore(deps): update dependency coverlet.collector to 10.1.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6905 * chore(deps): update dependency nunit to v5 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6903 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.70.1...v1.71.0 ## 1.70.1 <!-- Release notes generated using configuration in .github/release.yml at v1.70.1 --> ## What's Changed ### Other Changes * fix: don't run DedicatedThreadExecutor continuations inline on the dedicated thread by @thomhurst in https://github.com/thomhurst/TUnit/pull/6898 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.70.0...v1.70.1 ## 1.70.0 <!-- Release notes generated using configuration in .github/release.yml at v1.70.0 --> ## What's Changed ### Other Changes * feat: clear parallel constraints and limiter during test registration by @thomhurst in https://github.com/thomhurst/TUnit/pull/6897 * fix(mocks): emit valid lambdas for Task/ValueTask-returning delegate mocks by @thomhurst in https://github.com/thomhurst/TUnit/pull/6896 ### Dependencies * chore(deps): update tunit to 1.69.24 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6893 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.69.24...v1.70.0 ## 1.69.24 <!-- Release notes generated using configuration in .github/release.yml at v1.69.24 --> ## What's Changed ### Other Changes * fix: skip Ctrl+C handling where Console.CancelKeyPress is unsupported by @glennawatson in https://github.com/thomhurst/TUnit/pull/6889 ### Dependencies * chore(deps): update verify to 33.1.5 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6891 * chore(deps): update tunit to 1.69.21 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6890 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.69.21...v1.69.24 ## 1.69.21 <!-- Release notes generated using configuration in .github/release.yml at v1.69.21 --> ## What's Changed ### Other Changes * fix: preserve JUnit results after session cancellation by @Sing303 in https://github.com/thomhurst/TUnit/pull/6882 * feat: warn when setup hooks pass the test execution token by @Sing303 in https://github.com/thomhurst/TUnit/pull/6883 * fix: complete DedicatedThreadExecutor tests only after CleanUp() returns by @glennawatson in https://github.com/thomhurst/TUnit/pull/6886 ### Dependencies * chore(deps): update tunit to 1.69.16 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6881 ## New Contributors * @glennawatson made their first contribution in https://github.com/thomhurst/TUnit/pull/6886 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.69.16...v1.69.21 ## 1.69.16 <!-- Release notes generated using configuration in .github/release.yml at v1.69.16 --> ## What's Changed ### Other Changes * fix: preserve TRX results when session cleanup fails by @Sing303 in https://github.com/thomhurst/TUnit/pull/6879 ### Dependencies * chore(deps): update tunit to 1.69.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6864 * chore(deps): update dependency messagepack to 3.1.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6866 * chore(deps): update dependency dompurify to v3.4.16 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6867 * chore(deps): update dependency serialize-javascript to v7.1.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6868 * chore(deps): update dependency azure.data.tables to 12.13.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6870 * chore(deps): update dependency microsoft.playwright to 1.63.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6871 * chore(deps): update verify to 33.1.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6872 * chore(deps): update dependency verify.tool to v0.9.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6873 * chore(deps): update verify to 33.1.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6874 * chore(deps): update verify to 33.1.4 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6876 * chore(deps): update dependency moq to 4.21.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6877 * chore(deps): bump image-size from 2.0.2 to 2.0.4 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6878 ## New Contributors * @Sing303 made their first contribution in https://github.com/thomhurst/TUnit/pull/6879 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.69.0...v1.69.16 ## 1.69.0 <!-- Release notes generated using configuration in .github/release.yml at v1.69.0 --> ## What's Changed ### Other Changes * feat(templates): add enableDotCover flag (#6714) by @ForNeVeR in https://github.com/thomhurst/TUnit/pull/6844 * fix: don't request semantic models for attribute syntax from other compilations (DevKit crash) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6855 * fix(ci): restore net472 PublicAPI tests on Windows by @thomhurst in https://github.com/thomhurst/TUnit/pull/6857 * perf(html-report): stream report JSON through pooled chunks and overlap sidecar serialization by @thomhurst in https://github.com/thomhurst/TUnit/pull/6860 * chore(renovate): cap Microsoft.Build packages below 18.10.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6863 * perf: shrink generated per-class test source static constructors (~40% less startup JIT) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6859 * refactor: remove unreachable decimal source-text path from GenerateAttributeInstantiation by @thomhurst in https://github.com/thomhurst/TUnit/pull/6856 * perf: cut per-test allocations in discovery and execution (-61% at 10k tests) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6861 * perf: stop hashing per-test event receivers during registration (data-driven tests 2.9x faster at 10k) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6858 * perf(analyzers): cut TUnit analyzer build time ~60% on large test projects by @thomhurst in https://github.com/thomhurst/TUnit/pull/6862 ### Dependencies * chore(deps): update opentelemetry to 1.19.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6838 * chore(deps): update dependency opentelemetry.instrumentation.runtime to 1.19.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6840 * chore(deps): update tunit to 1.68.17 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6839 * chore(deps): update verify to 33.1.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6843 * chore(deps): update verify to 33.1.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6847 * chore(deps): update opentelemetry to 1.19.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6850 * chore(deps): update dependency grpc.core.api to 2.84.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6851 * chore(deps): update dependency stackexchange.redis to 3.3.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6853 * chore(deps): update dependency polyfill to 11.4.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6841 * chore(deps): update dependency polyfill to 11.4.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6842 ## New Contributors * @ForNeVeR made their first contribution in https://github.com/thomhurst/TUnit/pull/6844 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.68.17...v1.69.0 ## 1.68.17 <!-- Release notes generated using configuration in .github/release.yml at v1.68.17 --> ## What's Changed ### Other Changes * fix(mocks): emit init accessors for init-only properties and indexers by @thomhurst in https://github.com/thomhurst/TUnit/pull/6833 * fix(mocks): let one type be mocked regularly and wrapped in one compilation by @thomhurst in https://github.com/thomhurst/TUnit/pull/6835 * fix(mocks): keep editors in sync with publicized project references (#6836) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6837 ### Dependencies * chore(deps): update tunit to 1.68.4 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6824 * chore(deps): update mstest to 4.4.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6825 * chore(deps): update microsoft.testing by @thomhurst in https://github.com/thomhurst/TUnit/pull/6717 * chore(deps): update verify to v33 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6794 * chore(deps): update dependency stackexchange.redis to 3.2.15 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6827 * chore(deps): update dependency messagepack to 3.1.9 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6828 * chore(deps): update dependency stackexchange.redis to 3.3.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6831 * chore(deps): update opentelemetry to 1.19.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6832 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.68.4...v1.68.17 ## 1.68.4 <!-- Release notes generated using configuration in .github/release.yml at v1.68.4 --> ## What's Changed ### Other Changes * Add installable TUnit documentation routing skill by @thomhurst in https://github.com/thomhurst/TUnit/pull/6823 ### Dependencies * chore(deps): update tunit to 1.68.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6819 * chore(deps): update dependency mockolate to 3.5.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6822 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.68.0...v1.68.4 ## 1.68.0 <!-- Release notes generated using configuration in .github/release.yml at v1.68.0 --> ## What's Changed ### Other Changes * chore: switch to fillable checkboxes for issue templates by @radmorecameron in https://github.com/thomhurst/TUnit/pull/6795 * Add functionality to TUnit.Playwright to easily record videos for tests by @dahlsailrunner in https://github.com/thomhurst/TUnit/pull/6799 * docs: clarify thread pool usage in parallel tests by @thomhurst in https://github.com/thomhurst/TUnit/pull/6817 * Fix mocking events with ref struct arguments by @thomhurst in https://github.com/thomhurst/TUnit/pull/6814 * Fix TUnit0023 false positives for disposal through casts by @thomhurst in https://github.com/thomhurst/TUnit/pull/6818 ### Dependencies * chore(deps): update tunit to 1.67.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6793 * chore(deps): update xunit to 4.0.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6796 * chore(deps): update dependency bunit to 2.11.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6800 * chore(deps): update dependency stackexchange.redis to 3.2.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6801 * chore(deps): update dependency polly to 8.8.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6805 * chore(deps): update dependency dotnet-sdk to v10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6803 * chore(deps): update dependency masstransit to 9.2.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6806 * chore(deps): update dependency awssdk.sqs to 4.0.100.14 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6807 * chore(deps): update dependency brace-expansion to v5.0.12 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6809 * chore(deps): update dependency microsoft.net.test.sdk to 18.10.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6811 * chore(deps): update aspire to 13.5.4 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6813 ## New Contributors * @radmorecameron made their first contribution in https://github.com/thomhurst/TUnit/pull/6795 * @dahlsailrunner made their first contribution in https://github.com/thomhurst/TUnit/pull/6799 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.67.0...v1.68.0 ## 1.67.0 <!-- Release notes generated using configuration in .github/release.yml at v1.67.0 --> ## What's Changed ### Other Changes * docs: clarified and updated attributes comparison for xUnit 3 by @304NotModified in https://github.com/thomhurst/TUnit/pull/6774 * perf: read inline argument metadata without reflection by @thomhurst in https://github.com/thomhurst/TUnit/pull/6778 * perf: limit converter discovery to declarations by @thomhurst in https://github.com/thomhurst/TUnit/pull/6779 * perf: skip teardown analysis when no disposable members need cleanup by @thomhurst in https://github.com/thomhurst/TUnit/pull/6780 * perf: avoid line allocations when writing generated source by @thomhurst in https://github.com/thomhurst/TUnit/pull/6781 * perf: avoid formatting interface names for data-source checks by @thomhurst in https://github.com/thomhurst/TUnit/pull/6782 * perf: skip unannotated property data-source candidates by @thomhurst in https://github.com/thomhurst/TUnit/pull/6784 * fix: fold inner exceptions into IDE test failure output by @thomhurst in https://github.com/thomhurst/TUnit/pull/6777 * perf: reuse argument-free attribute initializer text by @thomhurst in https://github.com/thomhurst/TUnit/pull/6788 * perf: extract test metadata in attribute transforms by @thomhurst in https://github.com/thomhurst/TUnit/pull/6789 * perf: skip receiver registration for ordinary objects by @thomhurst in https://github.com/thomhurst/TUnit/pull/6790 * perf: cache reporting properties on test contexts by @thomhurst in https://github.com/thomhurst/TUnit/pull/6791 * fix: preserve executor registration, limiter precedence, and timeout classification by @Nice3point in https://github.com/thomhurst/TUnit/pull/6768 ### Dependencies * chore(deps): update tunit to 1.66.27 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6742 * chore(deps): update dependency bunit to 2.10.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6745 * chore(deps): update dependency imposter to 0.1.11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6744 * chore(deps): update dependency microsoft.kiota.abstractions to 2.1.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6747 * chore(deps): update dependency microsoft.templateengine.authoring.cli to v10.0.401 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6750 * chore(deps): update dependency fsharp.core to 10.1.401 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6748 * chore(deps): update dependency microsoft.templateengine.authoring.templateverifier to 10.0.401 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6751 * chore(deps): update dependency system.commandline to 2.0.12 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6752 * chore(deps): update dependency dotnet-sdk to v10.0.401 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6754 * chore(deps): update microsoft.extensions to 10.0.12 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6755 * chore(deps): update microsoft.aspnetcore to 10.0.12 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6753 * chore(deps): update dependency microsoft.entityframeworkcore to 10.0.12 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6749 * chore(deps): update mcr.microsoft.com/dotnet/sdk docker tag to v11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6756 * chore(deps): update dependency microsoft.net.test.sdk to 18.10.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6761 * chore(deps): update microsoft.extensions to 10.10.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6762 * chore(deps): update react to ^19.3.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6763 * chore(deps): update dependency awssdk.sqs to 4.0.100.13 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6764 * chore(deps): update dependency polyfill to 11.3.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6765 * chore(deps): update dependency polyfill to 11.3.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6766 * chore(deps): update dependency stackexchange.redis to 3.2.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6769 * chore(deps): update dependency microsoft.net.stringtools to 18.10.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6771 * chore(deps): update dependency dotnet-trace to v10.0.745401 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6773 * chore(deps): bump colord from 2.9.3 to 2.10.0 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6759 * chore(deps): bump joi from 17.13.4 to 17.13.7 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6758 * chore(deps): bump js-yaml from 4.3.1 to 4.3.2 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6757 * chore(deps): update dependency yaml to v2.9.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6785 * chore(deps): update verify to 32.0.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6786 * chore(deps): update dependency nunit.analyzers to 4.15.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6792 ## New Contributors * @304NotModified made their first contribution in https://github.com/thomhurst/TUnit/pull/6774 * @Nice3point made their first contribution in https://github.com/thomhurst/TUnit/pull/6768 ... (truncated) ## 1.66.27 <!-- Release notes generated using configuration in .github/release.yml at v1.66.27 --> ## What's Changed ### Other Changes * fix(mocks): initialize mock state before base constructor callbacks by @thomhurst in https://github.com/thomhurst/TUnit/pull/6741 ### Dependencies * chore(deps): update tunit to 1.66.16 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6733 * chore(deps): update dependency testcontainers.postgresql to 4.15.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6736 * chore(deps): update dependency testcontainers.redis to 4.15.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6737 * chore(deps): update dependency testcontainers.kafka to 4.15.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6735 * chore(deps): update dependency mockolate to 3.5.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6739 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.66.16...v1.66.27 ## 1.66.16 <!-- Release notes generated using configuration in .github/release.yml at v1.66.16 --> ## What's Changed ### Other Changes * fix: isolated name is lowercase (#6727) by @koryphaee in https://github.com/thomhurst/TUnit/pull/6728 * fix: preserve concurrent Assert.Multiple failures by @thomhurst in https://github.com/thomhurst/TUnit/pull/6730 * fix: preserve original HTTP mock request content by @thomhurst in https://github.com/thomhurst/TUnit/pull/6731 ### Dependencies * chore(deps): update tunit to 1.66.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6726 * chore(deps): update dependency dompurify to v3.4.15 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6732 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.66.10...v1.66.16 ## 1.66.10 <!-- Release notes generated using configuration in .github/release.yml at v1.66.10 --> ## What's Changed ### Other Changes * fix: restore null suppression for built-in assertion methods by @thomhurst in https://github.com/thomhurst/TUnit/pull/6725 ### Dependencies * chore(deps): update tunit to 1.66.8 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6724 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.66.8...v1.66.10 ## 1.66.8 <!-- Release notes generated using configuration in .github/release.yml at v1.66.8 --> ## What's Changed ### Other Changes * fix(ci): make issue triage work for external reporters by @thomhurst in https://github.com/thomhurst/TUnit/pull/6720 * fix(ci): run code review on pull requests from forks by @thomhurst in https://github.com/thomhurst/TUnit/pull/6722 * fix: suppress nullability warnings after Should NotBeNull assertions by @mvanhorn in https://github.com/thomhurst/TUnit/pull/6700 * fix: Avoid HTML report CLI option clashes by @mvanhorn in https://github.com/thomhurst/TUnit/pull/6677 ### Dependencies * chore(deps): update tunit to 1.66.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6719 * chore(deps): update dependency microsoft.kiota.abstractions to 2.1.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6721 * chore(deps): update dependency awssdk.sqs to 4.0.100.12 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6723 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.66.0...v1.66.8 ## 1.66.0 <!-- Release notes generated using configuration in .github/release.yml at v1.66.0 --> ## What's Changed ### Other Changes * Compile all C# documentation snippets by @thomhurst in https://github.com/thomhurst/TUnit/pull/6695 * Fix `Type` assignability assertions to evaluate represented type (not `RuntimeType`) by @thomhurst with @Copilot in https://github.com/thomhurst/TUnit/pull/6711 * Clarify ClassDataSource constructor requirements by @thomhurst in https://github.com/thomhurst/TUnit/pull/6716 * Add programmatic HTML reporting settings by @thomhurst in https://github.com/thomhurst/TUnit/pull/6699 * Fix timeout cancellation diagnostics by @thomhurst in https://github.com/thomhurst/TUnit/pull/6715 ### Dependencies * chore(deps): update tunit to 1.65.68 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6682 * chore(deps): update dependency verify.tool to v0.9.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6683 * chore(deps): update dependency mockolate to 3.4.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6685 * chore(deps): update dependency serialize-javascript to v7.1.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6687 * chore(deps): update dependency qs to v6.16.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6691 * chore(deps): update dependency system.reactive to v7 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6696 * chore(deps): update dependency imposter to 0.1.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6701 * chore(deps): update dependency microsoft.kiota.abstractions to 2.1.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6704 * chore(deps): update mstest to 4.4.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6705 * chore(deps): update dependency dotnet-trace to v10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6706 * chore(deps): update microsoft.testing by @thomhurst in https://github.com/thomhurst/TUnit/pull/6703 * chore(deps): update microsoft.testing by @thomhurst in https://github.com/thomhurst/TUnit/pull/6713 * chore(deps): bump fast-uri from 3.1.5 to 3.1.7 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6707 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.65.68...v1.66.0 ## 1.65.68 <!-- Release notes generated using configuration in .github/release.yml at v1.65.68 --> ## What's Changed ### Other Changes * fix: convert foreign array element-wise for trailing array parameter (#6678) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6681 ### Dependencies * chore(deps): update tunit to 1.65.63 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6672 * chore(deps): update aspire to 13.5.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6674 * chore(deps): update verify to v32 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6680 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.65.63...v1.65.68 ## 1.65.63 <!-- Release notes generated using configuration in .github/release.yml at v1.65.63 --> ## What's Changed ### Other Changes * Fix mocking hidden generic interface methods by @thomhurst in https://github.com/thomhurst/TUnit/pull/6671 ### Dependencies * chore(deps): update aspire to 13.5.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6655 * chore(deps): update opentelemetry to 1.18.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6653 * chore(deps): update dependency azure.data.tables to 12.12.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6654 * chore(deps): update tunit to 1.65.51 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6661 * chore(deps): update dependency svgo to v4.1.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6663 * chore(deps): update dependency picomatch to v4.0.7 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6664 * chore(deps): update dependency awssdk.sqs to 4.0.100.11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6666 * chore(deps): update dependency nunit3testadapter to 6.3.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6667 * chore(deps): update dependency azure.storage.blobs to 12.29.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6668 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.65.51...v1.65.63 ## 1.65.51 <!-- Release notes generated using configuration in .github/release.yml at v1.65.51 --> ## What's Changed ### Other Changes * Compile public documentation snippets by @thomhurst in https://github.com/thomhurst/TUnit/pull/6652 * Fix covariant property override discovery by @thomhurst in https://github.com/thomhurst/TUnit/pull/6660 ### Dependencies * chore(deps): update tunit to 1.65.38 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6644 * chore(deps): update dependency fscheck to 3.4.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6646 * chore(deps): update dependency awssdk.sqs to 4.0.100.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6647 * chore(deps): update aspire to 13.5.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6648 * chore(deps): update dependency stackexchange.redis to 3.1.31 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6650 * chore(deps): update opentelemetry to 1.18.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6651 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.65.38...v1.65.51 ## 1.65.38 <!-- Release notes generated using configuration in .github/release.yml at v1.65.38 --> ## What's Changed ### Other Changes * Fix mocks for inaccessible method signature types by @thomhurst in https://github.com/thomhurst/TUnit/pull/6641 ### Dependencies * chore(deps): update dependency awssdk.sqs to 4.0.100.9 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6636 * chore(deps): update tunit to 1.65.31 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6637 * chore(deps): update dependency dompurify to v3.4.14 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6640 * chore(deps): update aspire to 13.5.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6638 * chore(deps): update dependency cliwrap to 3.10.5 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6642 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.65.31...v1.65.38 ## 1.65.31 <!-- Release notes generated using configuration in .github/release.yml at v1.65.31 --> ## What's Changed ### Other Changes * Add xunit.v3.aot to speed comparison by @campersau in https://github.com/thomhurst/TUnit/pull/6621 * Suppress HTML reports for nested test runs by @thomhurst in https://github.com/thomhurst/TUnit/pull/6620 * Address xUnit speed comparison review feedback by @thomhurst in https://github.com/thomhurst/TUnit/pull/6623 * Fix docs TypeScript 7 compatibility by @thomhurst in https://github.com/thomhurst/TUnit/pull/6625 * Refresh docs npm dependencies by @thomhurst in https://github.com/thomhurst/TUnit/pull/6624 * Switch to SignalWire llms.txt plugin by @thomhurst in https://github.com/thomhurst/TUnit/pull/6627 * Remove single-test discovery copies by @thomhurst in https://github.com/thomhurst/TUnit/pull/6631 * Skip unused scheduler work for unconstrained suites by @thomhurst in https://github.com/thomhurst/TUnit/pull/6632 * Skip empty test registration work by @thomhurst in https://github.com/thomhurst/TUnit/pull/6628 * Skip absent hook pipelines by @thomhurst in https://github.com/thomhurst/TUnit/pull/6630 * Fix mocks with inaccessible constructor parameter types by @thomhurst in https://github.com/thomhurst/TUnit/pull/6635 ### Dependencies * chore(deps): update dependency awssdk.sqs to 4.0.100.8 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6608 * chore(deps): update tunit to 1.65.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6609 * chore(deps): update dependency testcontainers.postgresql to 4.14.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6612 * chore(deps): update dependency testcontainers.kafka to 4.14.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6611 * chore(deps): update dependency testcontainers.redis to 4.14.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6613 * chore(deps): update dependency microsoft.net.test.sdk to 18.9.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6614 * chore(deps): update xunit to v4 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6616 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.65.0...v1.65.31 ## 1.65.0 <!-- Release notes generated using configuration in .github/release.yml at v1.65.0 --> ## What's Changed ### Other Changes * Report unexpected mock generation failures by @thomhurst in https://github.com/thomhurst/TUnit/pull/6605 * Process every GenerateMock attribute by @thomhurst in https://github.com/thomhurst/TUnit/pull/6606 * Support T.Mock() for static abstract interfaces by @thomhurst in https://github.com/thomhurst/TUnit/pull/6607 ### Dependencies * chore(deps): update dependency microsoft.templateengine.authoring.cli to v10.0.303 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6586 * chore(deps): update dependency microsoft.templateengine.authoring.templateverifier to 10.0.303 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6587 * chore(deps): update microsoft.build to 18.9.6 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6585 * chore(deps): update dependency fsharp.core to 10.1.400 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6588 * chore(deps): update dependency microsoft.entityframeworkcore to 10.0.11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6589 * chore(deps): update dependency microsoft.templateengine.authoring.cli to v10.0.400 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6591 * chore(deps): update dependency dotnet-sdk to v10.0.400 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6590 * chore(deps): update dependency microsoft.templateengine.authoring.templateverifier to 10.0.400 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6592 * chore(deps): update dependency system.commandline to 2.0.11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6593 * chore(deps): update microsoft.extensions to 10.0.11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6595 * chore(deps): update microsoft.aspnetcore to 10.0.11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6594 * chore(deps): update tunit to 1.64.13 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6596 * chore(deps): update dependency nuget.protocol to 7.9.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6597 * chore(deps): update microsoft.extensions to 10.9.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6598 * chore(deps): update dependency polyfill to 11.2.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6601 * chore(deps): update dependency polyfill to 11.2.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6600 * chore(deps): update dependency microsoft.testing.extensions.codecoverage to 18.10.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6602 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.64.13...v1.65.0 ## 1.64.13 <!-- Release notes generated using configuration in .github/release.yml at v1.64.13 --> ## What's Changed ### Other Changes * Stabilize immediate WaitsFor assertion test by @thomhurst in https://github.com/thomhurst/TUnit/pull/6576 * fix: Allow Item.Member after HasSingleItem by @SnakyBeaky in https://github.com/thomhurst/TUnit/pull/6583 ### Dependencies * chore(deps): update tunit to 1.64.6 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6577 * chore(deps): update dependency nsubstitute to 6.2.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6580 * chore(deps): update dependency microsoft.playwright to 1.62.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6582 * chore(deps): update dependency microsoft.net.stringtools to 18.9.6 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6584 ## New Contributors * @SnakyBeaky made their first contribution in https://github.com/thomhurst/TUnit/pull/6583 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.64.6...v1.64.13 ## 1.64.6 <!-- Release notes generated using configuration in .github/release.yml at v1.64.6 --> ## What's Changed ### Other Changes * Switch NuGet publishing to trusted publishing by @thomhurst in https://github.com/thomhurst/TUnit/pull/6573 * Expose results directory through TestContext by @thomhurst in https://github.com/thomhurst/TUnit/pull/6575 * Fix outcome timeline overflow in HTML reports by @thomhurst in https://github.com/thomhurst/TUnit/pull/6574 ### Dependencies * chore(deps): update tunit to 1.64.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6570 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.64.0...v1.64.6 ## 1.64.0 <!-- Release notes generated using configuration in .github/release.yml at v1.64.0 --> ## What's Changed ### Other Changes * Honor cancellation tokens linked by custom test executors by @thomhurst in https://github.com/thomhurst/TUnit/pull/6565 * Fix linked cancellation from before-test hooks by @thomhurst in https://github.com/thomhurst/TUnit/pull/6568 * Add per-test execution cancellation by @thomhurst in https://github.com/thomhurst/TUnit/pull/6569 ### Dependencies * chore(deps): update tunit to 1.63.25 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6559 * chore(deps): update dependency serialize-javascript to v7.1.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6561 * chore(deps): update dependency nsubstitute to 6.1.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6564 * chore(deps): bump mermaid from 11.15.0 to 11.16.1 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6563 * chore(deps): bump nanoid from 3.3.16 to 3.3.18 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6562 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.63.25...v1.64.0 ## 1.63.25 <!-- Release notes generated using configuration in .github/release.yml at v1.63.25 --> ## What's Changed ### Other Changes * Fix Mermaid label contrast in dark mode by @thomhurst in https://github.com/thomhurst/TUnit/pull/6531 * Enhance matrix tests documentation by @koryphaee in https://github.com/thomhurst/TUnit/pull/6537 * fix: support nested Member after IsTypeOf by @mvanhorn in https://github.com/thomhurst/TUnit/pull/6540 * docs: Add documentation for TestContext.Parameters by @thomhurst with @Copilot in https://github.com/thomhurst/TUnit/pull/6558 * fix: run event receivers on injected properties by @thomhurst in https://github.com/thomhurst/TUnit/pull/6556 ### Dependencies * chore(deps): update tunit to 1.63.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6526 * chore(deps): update dependency stackexchange.redis to 3.1.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6529 * chore(deps): update verify to 31.28.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6532 * chore(deps): update dependency stackexchange.redis to 3.1.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6541 * chore(deps): update dependency dompurify to v3.4.13 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6542 * chore(deps): update dependency rabbitmq.client to 7.2.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6546 * chore(deps): update dependency polyfill to 11.0.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6549 * chore(deps): update dependency polyfill to 11.0.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6548 * chore(deps): bump fast-uri from 3.1.4 to 3.1.5 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6545 * chore(deps): bump postcss from 8.5.22 to 8.5.25 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6547 * chore(deps): update dependency stackexchange.redis to 3.1.11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6550 * chore(deps): update dependency stackexchange.redis to 3.1.13 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6552 ## New Contributors * @koryphaee made their first contribution in https://github.com/thomhurst/TUnit/pull/6537 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.63.0...v1.63.25 ## 1.63.0 <!-- Release notes generated using configuration in .github/release.yml at v1.63.0 --> ## What's Changed ### Other Changes * fix(mocks): dispatch abstract indexers through the engine instead of calling base by @thomhurst in https://github.com/thomhurst/TUnit/pull/6517 * feat(mocks): experimental compile-time internals access (#6514 Tier 2) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6520 * feat(mocks): make the async-factory Returns alias available below net9.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6518 * +semver:minor - feat(mocks): runtime auto-stubs for interfaces the source generator cannot see by @thomhurst in https://github.com/thomhurst/TUnit/pull/6519 ### Dependencies * chore(deps): update tunit to 1.62.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6508 * chore(deps): update dependency mockolate to 3.4.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6512 * chore(deps): update dependency cliwrap to 3.10.4 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6513 * chore(deps): update dependency stackexchange.redis to 3.0.25 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6522 * chore(deps): update dependency brace-expansion to v5.0.9 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6523 * chore(deps): update dependency microsoft.build.utilities.core to v18 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6525 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.62.0...v1.63.0 ## 1.62.0 <!-- Release notes generated using configuration in .github/release.yml at v1.62.0 --> ## What's Changed ### Other Changes * fix(docs): make Mermaid lifecycle diagrams readable by @thomhurst in https://github.com/thomhurst/TUnit/pull/6485 * fix(mocks): strip nullable annotation from constructor dispatch patterns by @thomhurst in https://github.com/thomhurst/TUnit/pull/6498 * fix(mocks): skip interfaces with inaccessible abstract members by @thomhurst in https://github.com/thomhurst/TUnit/pull/6502 * feat(mocks): accept an async factory in Returns() on async members by @thomhurst in https://github.com/thomhurst/TUnit/pull/6503 * fix(mocks): report TM006 instead of CS1729 for unsubclassable classes by @thomhurst in https://github.com/thomhurst/TUnit/pull/6501 * fix(mocks): emit the setup surface into the globally-imported namespace by @thomhurst in https://github.com/thomhurst/TUnit/pull/6504 * fix(mocks): reference TUnit.Mocks once in snapshot test compilations by @thomhurst in https://github.com/thomhurst/TUnit/pull/6506 * fix(mocks): make generated identifier sanitization injective by @thomhurst in https://github.com/thomhurst/TUnit/pull/6507 ### Dependencies * chore(deps): update tunit to 1.61.38 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6479 * chore(deps): update dependency brace-expansion to v5.0.8 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6478 * chore(deps): update dependency cliwrap to 3.10.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6482 * chore(deps): bump postcss from 8.5.10 to 8.5.22 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6480 * chore(deps): update dependency fscheck to 3.3.4 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6486 * chore(deps): update dependency minimatch to v10.2.6 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6490 * chore(deps): update actions/stale action to v11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6496 * chore(deps): update microsoft.testing to 2.3.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6499 * chore(deps): update mstest to 4.3.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6500 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.61.38...v1.62.0 ## 1.61.38 <!-- Release notes generated using configuration in .github/release.yml at v1.61.38 --> ## What's Changed ### Other Changes * fix: apply 'unmanaged' constraint handling to remaining source generators by @thomhurst in https://github.com/thomhurst/TUnit/pull/6474 * feat: expose data source attributes on TestContext by @thomhurst in https://github.com/thomhurst/TUnit/pull/6477 ### Dependencies * chore(deps): update tunit to 1.61.35 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6475 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.61.35...v1.61.38 ## 1.61.35 <!-- Release notes generated using configuration in .github/release.yml at v1.61.35 --> ## What's Changed ### Other Changes * fix(mocks): omit 'struct' constraint when type parameter has 'unmanaged' constraint by @thomhurst in https://github.com/thomhurst/TUnit/pull/6473 ### Dependencies * chore(deps): bump fast-uri from 3.1.2 to 3.1.4 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6466 * chore(deps): update tunit to 1.61.29 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6467 * chore(deps): update dependency verify.tool to v0.8.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6470 * chore(deps): update dependency docusaurus-plugin-llms to ^0.5.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6472 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.61.29...v1.61.35 ## 1.61.29 <!-- Release notes generated using configuration in .github/release.yml at v1.61.29 --> ## What's Changed ### Other Changes * perf: remove EnumerableAsyncProcessor dependency by @thomhurst in https://github.com/thomhurst/TUnit/pull/6465 ### Dependencies * chore(deps): bump shell-quote from 1.8.4 to 1.10.0 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6462 * chore(deps): bump body-parser from 1.20.5 to 1.20.6 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6461 * chore(deps): bump webpack-dev-server from 5.2.5 to 5.2.6 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6460 * chore(deps): update dependency microsoft.kiota.abstractions to v2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6464 * chore(deps): update tunit to 1.61.23 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6463 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.61.23...v1.61.29 ## 1.61.23 <!-- Release notes generated using configuration in .github/release.yml at v1.61.23 --> ## What's Changed ### Other Changes * fix(mocks): emit 'where T : default' for interface-constrained generic methods by @thomhurst in https://github.com/thomhurst/TUnit/pull/6458 ### Dependencies * chore(deps): update tunit to 1.61.15 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6450 * chore(deps): update actions/checkout action to v7.0.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6453 * chore(deps): update verify to 31.26.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6454 * chore(deps): update verify to 31.27.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6457 * chore(deps): update react to ^19.2.8 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6459 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.61.15...v1.61.23 ## 1.61.15 <!-- Release notes generated using configuration in .github/release.yml at v1.61.15 --> ## What's Changed ### Other Changes * feat: Allow disabling the automatic html report upload to upload-artifacts@v7 by @Crashdummyy in https://github.com/thomhurst/TUnit/pull/6447 * fix: stop retrying artifact upload on non-retryable status codes by @thomhurst in https://github.com/thomhurst/TUnit/pull/6449 ### Dependencies * chore(deps): update tunit to 1.61.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6437 * chore(deps): update verify to 31.24.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6438 * chore(deps): update dependency opentelemetry.instrumentation.aspnetcore to 1.17.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6440 * chore(deps): update verify to 31.25.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6442 * chore(deps): update dependency docusaurus-plugin-llms to ^0.5.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6443 * chore(deps): update opentelemetry to 1.17.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6441 ## New Contributors * @Crashdummyy made their first contribution in https://github.com/thomhurst/TUnit/pull/6447 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.61.0...v1.61.15 ## 1.61.0 <!-- Release notes generated using configuration in .github/release.yml at v1.61.0 --> ## What's Changed ### Other Changes * docs: revamp README with feature showcase and auto-updating benchmarks by @thomhurst in https://github.com/thomhurst/TUnit/pull/6430 * docs: align docs homepage messaging with revamped README by @thomhurst in https://github.com/thomhurst/TUnit/pull/6431 * fix(engine): emit ECMA-335 metadata-format type names in TestMethodIdentifierProperty by @thomhurst in https://github.com/thomhurst/TUnit/pull/6433 * fix(benchmarks): make SetupTeardownTests JSON tests Native AOT compatible by @thomhurst in https://github.com/thomhurst/TUnit/pull/6434 * Organize repository into conventional .NET layout by @thomhurst in https://github.com/thomhurst/TUnit/pull/6435 ### Dependencies * chore(deps): update dependency polyfill to v11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6418 * chore(deps): update dependency tunit.aspire to 1.6* by @thomhurst in https://github.com/thomhurst/TUnit/pull/6419 * chore(deps): update tunit to 1.6* by @thomhurst in https://github.com/thomhurst/TUnit/pull/6420 * chore(deps): update dependency polyfill to 11.0.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6421 * chore(deps): update dependency polyfill to 11.0.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6422 * chore(deps): update verify to 31.24.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6424 * chore(deps): update microsoft.build to 18.8.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6426 * chore(deps): update dependency microsoft.net.stringtools to 18.8.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6425 * chore(deps): update actions/setup-dotnet action to v6 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6427 * chore(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /docs by @dependabot[bot] in https://github.com/thomhurst/TUnit/pull/6429 * chore(deps): update opentelemetry to 1.17.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6432 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.60.0...v1.61.0 ## 1.60.0 <!-- Release notes generated using configuration in .github/release.yml at v1.60.0 --> ## What's Changed ### Other Changes * feat: cross-process test report aggregation — merged HTML report + single GitHub summary by @thomhurst in https://github.com/thomhurst/TUnit/pull/6415 ### Dependencies * chore(deps): update tunit to 1.59.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6398 * chore(deps): update verify to 31.24.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6399 * chore(deps): update microsoft.testing to 2.3.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6401 * chore(deps): update mstest to 4.3.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6402 * chore(deps): update actions/setup-node action to v7 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6403 * chore(deps): update dependency microsoft.net.test.sdk to 18.8.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6404 * chore(deps): update dependency microsoft.net.test.sdk to 18.8.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6405 * chore(deps): update dependency fsharp.core to 10.1.302 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6406 * chore(deps): update dependency microsoft.templateengine.authoring.cli to v10.0.302 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6407 * chore(deps): update dependency microsoft.entityframeworkcore to 10.0.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6410 * chore(deps): update dependency dotnet-sdk to v10.0.302 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6409 * chore(deps): update dependency system.commandline to 2.0.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6412 * chore(deps): update dependency microsoft.templateengine.authoring.templateverifier to 10.0.302 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6411 * chore(deps): update microsoft.aspnetcore to 10.0.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6413 * chore(deps): update microsoft.extensions to 10.0.10 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6414 * chore(deps): update microsoft.extensions to 10.8.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6416 * chore(deps): update dependency polyfill to v11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6417 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.59.0...v1.60.0 ## 1.59.0 <!-- Release notes generated using configuration in .github/release.yml at v1.59.0 --> ## What's Changed ### Other Changes * Fix typed MethodDataSource provider instances by @thomhurst in https://github.com/thomhurst/TUnit/pull/6378 * Fix instance MethodDataSource isolation by @thomhurst in https://github.com/thomhurst/TUnit/pull/6379 * fix(mocks): CS9262 in generated mock members on VS 17.14 (Roslyn 4.14) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6392 * Remove EqualTo alias documentation by @thomhurst in https://github.com/thomhurst/TUnit/pull/6396 * fix(aspnetcore): guard hosted-service stop against concurrent double Host.StopAsync by @thomhurst in https://github.com/thomhurst/TUnit/pull/6397 * Add single-item assertion chaining by @thomhurst in https://github.com/thomhurst/TUnit/pull/6395 * Improve test framework migrations by @thomhurst in https://github.com/thomhurst/TUnit/pull/6381 * Add -f/--framework support to TUnit template with .NET Framework handling by @thomhurst with @Copilot in https://github.com/thomhurst/TUnit/pull/6262 ### Dependencies * chore(deps): update tunit to 1.58.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6351 * chore(deps): update dependency tunit.core to 1.58.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6352 * chore(deps): update dependency picomatch to v4.0.5 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6354 * chore(deps): update dependency testcontainers.postgresql to 4.13.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6356 * chore(deps): update dependency testcontainers.redis to 4.13.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6357 * chore(deps): update dependency testcontainers.kafka to 4.13.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6355 * chore(deps): update dependency gitversion.tool to v6.8.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6359 * chore(deps): update dependency typescript to v7 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6372 * chore(deps): update mstest to 4.3.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6374 * chore(deps): update dependency messagepack to 3.1.8 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6376 * chore(deps): update dependency opentelemetry.instrumentation.runtime to 1.16.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6380 * chore(deps): update dependency vogen to 8.0.6 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6382 * chore(deps): update dependency gitversion.tool to v6.8.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6384 * chore(deps): update dependency npgsql.entityframeworkcore.postgresql to 10.0.3 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6385 * chore(deps): update docusaurus to v3.10.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6386 * chore(deps): update dependency stackexchange.redis to 3.0.17 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6387 * chore(deps): update dependency dompurify to v3.4.12 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6389 * chore(deps): update dependency svgo to v4.0.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6390 * chore(deps): update dependency nsubstitute to v6 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6394 * chore(deps): update verify to 31.24.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6367 * chore(deps): update microsoft.testing by @thomhurst in https://github.com/thomhurst/TUnit/pull/6369 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.58.0...v1.59.0 ## 1.58.0 <!-- Release notes generated using configuration in .github/release.yml at v1.58.0 --> ## What's Changed ### Other Changes * feat(aspire): opt-in live forwarding of resource logs into test output (#6341) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6345 * fix(aspire): fail fast on Finished-state crashes during startup (#6342) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6346 * fix(engine): keep per-test timeout token source alive through teardown (#6339) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6349 * feat(aspire): resource-diagnostics helpers + retained log buffer (#6343) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6350 * feat(aspire): surface exception detail in routed OTLP logs (#6347) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6348 ### Dependencies * chore(deps): update tunit to 1.57.17 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6344 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.57.17...v1.58.0 ## 1.57.17 <!-- Release notes generated using configuration in .github/release.yml at v1.57.17 --> ## What's Changed ### Other Changes * fix(engine): reset test cancellation token before After hooks on timeout path (#6339) by @thomhurst in https://github.com/thomhurst/TUnit/pull/6340 ### Dependencies * chore(deps): update tunit to 1.57.14 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6336 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.57.14...v1.57.17 ## 1.57.14 <!-- Release notes generated using configuration in .github/release.yml at v1.57.14 --> ## What's Changed ### Other Changes * fix(engine): apply --treenode-filter to --list-tests by @thomhurst in https://github.com/thomhurst/TUnit/pull/6334 * feat(aspire): dump resource error logs on test failure + warn on missing telemetry wiring by @thomhurst in https://github.com/thomhurst/TUnit/pull/6323 ### Dependencies * chore(deps): update dependency stackexchange.redis to 3.0.11 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6324 * chore(deps): update tunit to 1.57.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6322 * chore(deps): update dependency brace-expansion to v5.0.7 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6326 * chore(deps): update dependency polyfill to 10.11.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6327 * chore(deps): update dependency polyfill to 10.11.1 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6329 * chore(deps): update dependency polyfill to 10.11.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6330 * chore(deps): update dependency polyfill to 10.11.2 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6331 * chore(deps): update dependency serialize-javascript to v7.0.7 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6333 * chore(deps): update dependency gitversion.tool to v6.8.0 by @thomhurst in https://github.com/thomhurst/TUnit/pull/6335 **Full Changelog**: https://github.com/thomhurst/TUnit/compare/v1.57.0...v1.57.14 ## 1.57.0 <!-- Release notes generated using configuration in .github/release.yml at v1.57.0 --> ## What's Changed ### Other Changes * perf(sourcegen): consolidate per-file ModuleInitializers into merged .cctor (#6226) by @thomh…
Fixes #6493
Problem
T.Mock()on a class whose constructors are all inaccessible produced:MemberDiscovery.DiscoverConstructorsonly collects accessible constructors, so the model ended up with an emptyConstructorsarray andMockFactoryBuilder.GenerateConstructorDispatchfell through tonew XMockImpl(engine). The impl derives from the target, and its implicitbase()call has nothing to bind to. The error pointed into generated code with no link back to the call site.Such a type genuinely cannot be mocked: every subclass constructor must chain to a base constructor, so with all of them private (or internal in another assembly) no subclass can be declared at all. The right outcome is a clear diagnostic, not generated code that cannot compile.
Fix
MockTypeModel.LacksAccessibleConstructor— true for a class target with no chainable constructor.MockGeneratorskips impl/factory/members for those targets and emits only the staticMock()entry point, so the call site still binds and the diagnostic below is the single error the user sees.TM006+InaccessibleConstructorMockAnalyzer, reported at the call site forMock.Of<T>(),Mock.Wrap<T>()and the generatedT.Mock()form. The message points at the library's own factory (e.g. Azure'sServiceBusModelFactory) as the way to build such a value.Protected and protected-internal constructors remain chainable — the generated impl derives from the target — so abstract classes are unaffected. Sealed and value types are left to TM001/TM002 rather than double-reported.
Tests
tests/TUnit.Mocks.Analyzers.Tests/InaccessibleConstructorMockAnalyzerTests.cs— 9 cases: private-only ctor via all three entry points, plus non-reporting cases for public / implicit parameterless / protected / same-assembly internal constructors, interfaces, and sealed types.Analyzer tests: 39 passed.
TUnit.Mocks.Tests: 1160 passed. Generator snapshots: 80 passed, unchanged.