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
Extract typed-row binding and verify invocation parity - #7507
Extract the analyzer's closed-signature typed-row binding calculation into TypedRowParameterBinding, next to the linked inference helper. Keep the existing conversion, optional omission and declared-position token rules unchanged.
Add compiled parity coverage that checks expected validation types, inference success versus null in both discovery modes, and concrete results from generated argument expressions and the reflection invoker. Cover omitted optional arguments and trailing arrays, packed and nested arrays, element conversions, loose trailing values, injected versus inferred CancellationTokens, and all five supported params collection interfaces. Compare collection support with both invocation implementations, including unsupported concrete collections and spans.
No actionable comments were generated in the recent review.
Walkthrough
The analyzer now uses TypedRowParameterBinding.GetExpectedTypes to calculate effective parameter types for inferred generic typed rows. New tests compare those types with generated and reflection-based invocation across optional parameters, arrays, params collections, tuples, and cancellation tokens.
Adds a helper that excludes declared cancellation-token parameters, drops eligible omitted trailing parameters, and handles trailing params or SZ-array arguments as elements when they do not bind as a whole.
Integrate and verify typed-row binding src/TUnit.Analyzers/TestDataAnalyzer.cs, tests/TUnit.Core.SourceGenerator.Tests/TypedRowParameterBindingTests.cs
CheckDataGenerator uses the helper instead of inline parameter-type construction. Tests compare inferred types and expected row argument types with generated and reflection-based invocation, and check supported params element types.
thomhurst/TUnit#7460 — Introduced the typed-row inference and inline closed-signature validation that this PR centralizes in a helper.
thomhurst/TUnit#7343 — Introduced typed argument-row inference and analyzer validation for optional and params parameters.
Merge Risk: Minimal · up to 3c52f
No merge-blocking issue was identified in the typed-row binding change. It is mergeable after normal checks.
Pre-merge checks: 4 · 1
Failed checks: 1 warning
Check name
Status
Explanation
Resolution
Docstring Coverage
Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documenta…
Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed checks: 4 passed
Check name
Status
Explanation
Description Check
Check skipped - CodeRabbit’s high-level summary is enabled.
Title check
The title "Extract typed-row binding and verify invocation parity" matches the main change. The PR moves the analyzer's typed-row parameter binding calculation into a new TypedRowParameterBinding help…
Linked Issues check
Issue #7465 requires a pure helper for the closed parameter-type calculation, regression coverage, and preserved diagnostics and execution behavior.
Helper: The new file src/TUnit.Analyzers/Extension…
Out of Scope Changes check
The whole-PR diff against the merge base b5561fb changes three files: TestDataAnalyzer.cs (extraction and call-site replacement), the new TypedRowParameterBinding.cs (extracted helper), and the new T…
Full details: Title check
Explanation
The title "Extract typed-row binding and verify invocation parity" matches the main change. The PR moves the analyzer's typed-row parameter binding calculation into a new TypedRowParameterBinding helper, and adds tests that compare expected validation types with generated and reflection-based invocation results. The title is specific and concise, and it names both the refactor and the added parity coverage.
Full details: Linked Issues check
Explanation
Issue #7465 requires a pure helper for the closed parameter-type calculation, regression coverage, and preserved diagnostics and execution behavior.
Helper: The new file src/TUnit.Analyzers/Extensions/TypedRowParameterBinding.cs adds GetExpectedTypes. Its logic matches the inline code removed from TestDataAnalyzer.CheckDataGenerator. It covers optional and defaulted trailing parameters, trailing params and SZ-array elements, the single-array-as-element rule, and CancellationToken removal by declared signature. It also adds GetParamsElementType for the five supported collection interfaces and SZ arrays. The helper only reads symbols and queries conversions, so it is pure in the sense the issue requires.
Analyzer call site: TestDataAnalyzer.CheckDataGenerator now calls TypedRowParameterBinding.GetExpectedTypes with the same arguments. CheckInferredTypeArgumentConstraints still runs before this call, so constraint diagnostics are unchanged. The diff does not touch invalid-element diagnostics.
Coverage: TypedRowParameterBindingTests covers the requested cases. These are omitted optional and trailing arrays, packed and nested arrays, element conversions, loose trailing values, injected and inferred CancellationTokens, and all five params collection interfaces, gated to NET9_0_OR_GREATER. Generated invocation and the reflection invoker are checked against the expected types. Collection support is compared with both invocation implementations, including unsupported List, HashSet, Span, and ReadOnlySpan inputs.
Limits: I did not run the tests. The reported counts (30, 17, 41 passed) are author-reported. The new tests call private helpers by reflection. This coupling is a maintenance risk, but it does not affect this verdict.
Full details: Out of Scope Changes check
Explanation
The whole-PR diff against the merge base b5561fb changes three files: TestDataAnalyzer.cs (extraction and call-site replacement), the new TypedRowParameterBinding.cs (extracted helper), and the new TypedRowParameterBindingTests.cs (parity tests). Each change supports issue #7465. The extraction removes inline logic and adds a call to the helper, with no behavior change. The tests cover the objectives. The PR does not change generator output, public API, reflection discovery, or diagnostic messages. No change lacks a connection to the issue. Related issues #7386, #7371, #7410, and #7412 are context only and do not add requirements.
Full details: Docstring Coverage
Explanation
Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 8 functions across 3 files.
Resolution
Write docstrings for the functions missing them to satisfy the coverage threshold.
Finishing Touches
Generate docstrings
Commit to this branch
Create a new PR
Generate unit tests (beta)
Commit to this branch
Create a new PR
Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
A rabbit checks each row with care Optional values vanish there Arrays keep their shape or spread Tokens find their proper thread Tests compare each route ahead And nibble on the code instead
CodeRabbit Verify
Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
Source mode: Auto
Repository: Unavailable
Branch: Unavailable
File: No configuration file from this repository applied
Commit: Unavailable
Layers: Organization UI
Review profile: CHILL
Plan: Advanced
Run ID: a7c41ba9-7882-4d4d-913b-c890a6bfca35
Commits
Reviewing files that changed from the base of the PR and between b5561fb and 3c52f4e.
Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 1 remain after this review.
This is a behaviour-preserving extraction. I compared the diff to the code removed from TestDataAnalyzer.CheckDataGenerator: GetExpectedTypes and GetParamsElementType are moved verbatim, with context.Compilation and typeArguments replaced by parameters. The call site still calls method.Construct(inferred) only after CheckInferredTypeArgumentConstraints, so the ordering is unchanged. I didn't build or run the tests.
The new parity coverage is valuable. It compiles real code, emits it, and compares the analyzer's expected types with what the generated argument expressions and the reflection invoker actually do.
Suggestions, none of them blocking:
Reflection lookups by string name. The tests find internal members with GetType("...") and GetMethod("..."): GetExpectedTypes, GetParamsElementType, GetTrailingElementType, InferTypesFromTypedRow, CreateReflectionTestInvoker, InferMethodTypeArgumentsFromRowType and GetRowArgumentTypes. A rename will fail at runtime with a null-forgiving NullReferenceException instead of a compile error. If the test project can get InternalsVisibleTo for the analyzer, call the analyzer helpers directly (the test project already references TUnit.Analyzers, since it uses TestDataAnalyzer). For the engine, add one small helper that wraps the lookup and throws a message naming the missing member, so a failure says what was renamed.
Helper visibility.GetParamsElementType is private and exists in three copies (analyzer, TupleArgumentHelper.GetTrailingElementType, and the engine's reflection collector). The Collecting_element_types_match_both_invocation_implementations test guards against drift between them, which is good. Longer term, consider whether the analyzer and generator can share one implementation, since they already share the linked inference helper. That would make the parity test unnecessary for those two.
Test readability. The Cases() rows carry eight positional strings and a bool. A small record or named-tuple type would make the table easier to review and extend. The #if NET9_0_OR_GREATER branch also means the params-collection cases only run on some target frameworks. Please confirm CI covers one of them.
Overall this looks good to merge once CI is green.
[Low impact] The PR appears safe to merge; the previous test weakness is fixed and no new actionable issues were found.
Summary
The PR extracts the analyzer’s existing typed-row binding logic into TypedRowParameterBinding and adds compiled checks against generated and reflection calls.
Typed-row checks now use a dedicated binding helper.
Pushed 3c52f4e to address the token identity coverage finding: generated and reflection invocation now distinguish injected, scalar-row and array-element tokens by CancellationToken equality. All 30 TypedRowParameterBindingTests passed on net10.0; git diff --check passed.
Disposition of Claude's nonblocking suggestions:
Keeping reflection for this extraction: the tests exercise internal/private helpers across assemblies, including the engine. Broadening visibility or refactoring lookup diagnostics is optional test maintenance and does not affect the asserted binding results.
Keeping the three collection-type implementations separate here preserves the existing production behavior. This PR adds parity coverage specifically to detect drift; sharing more production code is outside this behavior-preserving extraction.
Keeping the existing MethodDataSource rows avoids a separate test-data refactor. CI coverage is confirmed: RunSourceGeneratorTestsModule uses ModernAndNetFrameworks in TestBaseModule, which includes net10.0 and also net9.0 on Linux. The conditional params-collection cases therefore run in CI; they also passed locally on net10.0.
The draft remains awaiting fresh reviews for the new head.
The extraction in TypedRowParameterBinding is a faithful move of the analyzer logic. I compared the removed block with the new class line by line, including the declared-position trailing-parameter handling and the GetParamsElementType collection set. I found no behavior change. Having TestDataAnalyzer call one helper next to TypedDataSourceInference is a clear improvement.
The parity tests cover the cases the PR lists, and they compare analyzer, generated-code and reflection-invoker results against each other.
Suggestions, none blocking:
Reflection into internals. The tests look up GetExpectedTypes, GetParamsElementType, InferTypesFromTypedRow, GetTrailingElementType and CreateReflectionTestInvoker by string name. A rename turns these into runtime NullReferenceExceptions instead of compile errors. InternalsVisibleTo for the test assembly would let the analyzer helper be called directly. The engine types are probably harder to reach, so a shared nameof-based accessor or a helper that fails with a clear message when a lookup is null would at least make failures readable.
GetParamsElementType is private but tested. The test reaches it with BindingFlags.NonPublic. Making it internal documents that it is part of the parity contract.
Long test method.Expected_types_agree_with_generated_and_reflection_invocation runs analyzer, source-gen and reflection checks in one body. Splitting it into a shared fixture plus one assertion group per path would make a failure point to the diverging implementation sooner.
#if NET9_0_OR_GREATER cases. The five params collection interface cases only run on net9.0 and later. Check CI still exercises them on a TFM that satisfies this.
Promoted to ready at unchanged head 3c52f4e after positive Claude and Codex verdicts and resolution of the token-identity finding.
Disposition of the current Claude suggestions: retain the existing reflection-based test access and private helper visibility for this behavior-preserving extraction; these helpers are implementation details, and changing their visibility is unnecessary for parity coverage. Retain the combined parity test so each case compares all implementations together; splitting assertion groups is optional readability work. The net9.0/net10.0 CI coverage for the conditional collection cases is confirmed in the earlier disposition above.
Promotion triggers a fresh Claude review and full CI. Auto-merge must wait for the promotion Claude run to pass and its comment to be read; this single unit does not wait for runs.
This is a behaviour-preserving extraction: the closed-signature binding logic moves from TestDataAnalyzer.CheckDataGenerator into TypedRowParameterBinding.GetExpectedTypes, and GetParamsElementType moves with it. I compared the moved code line by line with the removed code. The only change is that context.Compilation and typeArguments become the compilation and argumentTypes parameters. The call site passes method.Construct(inferred) as before, so the diagnostics should not change.
The parity tests are a real improvement. They emit the generated argument expressions and run them, then run the reflection invoker, and compare both against the analyzer's expected types. That is the right way to keep the three implementations (analyzer, generator, reflection) in sync.
Suggestions, none blocking:
The tests reach private and internal members through string-based reflection (GetMethod("GetExpectedTypes"), GetTrailingElementType, InferTypesFromTypedRow and similar). A rename will fail at runtime with a null-reference error, not at compile time. If TUnit.Core.SourceGenerator.Tests can see the analyzer's internals (for example via InternalsVisibleTo), calling TypedRowParameterBinding.GetExpectedTypes directly would be sturdier. You could also give the GetMethod calls a shared helper that asserts non-null with a clear message.
Expected_types_agree_with_generated_and_reflection_invocation is long and mixes four concerns: inference, analyzer expected types, generated invocation and reflection invocation. Splitting it into helpers, or into separate assertions per mode, would make a failing case easier to diagnose. The case tuples are also positional (eight untyped fields), so a small record or named type would be more readable.
The NET9_0_OR_GREATER guard around the params collection cases means the five-interface coverage only runs on net9 and later. That seems intended, but please confirm CI actually exercises it.
I did not run the tests locally. Overall this looks good to merge, assuming CI passes.
Run 41657938516 completed successfully on head 3c52f4e; the earlier wait has ended. All current CI checks, including the required OS-specific engine and AOT checks, pass. Codex reports a completed review with no findings for this same head, and the promotion Claude review is positive.
The promotion review repeats the already-dispositioned nonblocking suggestions: retain private reflection-based test access and the combined per-case parity assertions for this behavior-preserving extraction. The net9/net10 CI coverage of conditional params-collection tests is confirmed in the previous disposition. CodeRabbit's docstring-coverage warning is nonblocking: the extracted helper already has an XML summary and explanatory comments, and the remaining touched functions are test coverage or existing code. Adding blanket docstrings is unnecessary for this extraction. CodeRabbit and Greptile report no remaining actionable findings; the token-identity thread is fixed and resolved with no later reviewer reply.
Proceeding through the repository merge gate on the unchanged head.
Updated [TUnit](https://github.com/thomhurst/TUnit) from 1.78.0 to
1.81.10.
<details>
<summary>Release notes</summary>
_Sourced from [TUnit's
releases](https://github.com/thomhurst/TUnit/releases)._
## 1.81.10
<!-- Release notes generated using configuration in .github/release.yml
at v1.81.10 -->
## What's Changed
### Other Changes
* Preserve private type values in generated executable test attributes
by @thomhurst in thomhurst/TUnit#7667
* feat(sourcegen): inherit XML docs from [AssertionExtension] classes by
@JohnVerheij in thomhurst/TUnit#7692
### Dependencies
* Update all non-major dependencies to 1.81.5 by @thomhurst in
thomhurst/TUnit#7690
**Full Changelog**:
thomhurst/TUnit@v1.81.5...v1.81.10
## 1.81.5
<!-- Release notes generated using configuration in .github/release.yml
at v1.81.5 -->
## What's Changed
### Other Changes
* feat(sourcegen): inherit XML docs from [GenerateAssertion] source
methods by @JohnVerheij in thomhurst/TUnit#7687
* fix(mocks): stop verification leaving setups on void-shaped members by
@thomhurst in thomhurst/TUnit#7688
### Dependencies
* Update all non-major dependencies by @thomhurst in
thomhurst/TUnit#7681
* Update dependency OpenTelemetry.Instrumentation.AspNetCore to 1.20.2
by @thomhurst in thomhurst/TUnit#7685
**Full Changelog**:
thomhurst/TUnit@v1.81.0...v1.81.5
## 1.81.0
<!-- Release notes generated using configuration in .github/release.yml
at v1.81.0 -->
## What's Changed
### Other Changes
* Extract Windows engine hang dump stacks in CI by @thomhurst in
thomhurst/TUnit#7584
* Cut STAThreadTests repeats so the Windows reflection pass run fits its
timeout by @thomhurst in thomhurst/TUnit#7594
* Preserve expected-value semantics when migrating xUnit Assert.Single
by @thomhurst in thomhurst/TUnit#7586
* Capture Windows loader ownership and thread CPU times by @thomhurst
in thomhurst/TUnit#7603
* Isolate the full passing engine session from sibling test processes by
@thomhurst in thomhurst/TUnit#7606
* Remove unused concrete metadata generation chain by @thomhurst in
thomhurst/TUnit#7569
* Avoid temporary arrays in singleton tuple binding by @thomhurst in
thomhurst/TUnit#7583
* Fix ParallelTests overlap assertion for late repetitions by
@thomhurst in thomhurst/TUnit#7600
* Fix nullable generic class method-row analyzer validation by
@thomhurst in thomhurst/TUnit#7613
* Fix generated property injection into boxed structs by @thomhurst in
thomhurst/TUnit#7612
* Make Playwright template navigation deterministic by @thomhurst in
thomhurst/TUnit#7604
* Release objects and complete teardown for dependency-skipped tests by
@thomhurst in thomhurst/TUnit#7605
* Support typed tuple rows before optional parameters by @thomhurst in
thomhurst/TUnit#7608
* Cover null rows in generic class type inference by @thomhurst in
thomhurst/TUnit#7621
* Skip certificate trust preparation for HTTP-only Aspire test resources
by @thomhurst in thomhurst/TUnit#7618
* Accept convertible typed rows before optional test parameters by
@thomhurst in thomhurst/TUnit#7619
* Preserve nullable class discovery parity and constructor precedence by
@thomhurst in thomhurst/TUnit#7614
* Preserve whole tuple rows before omitted trailing arrays by
@thomhurst in thomhurst/TUnit#7625
* Fix reflection inference for concrete params arrays by @thomhurst in
thomhurst/TUnit#7627
* Remove obsolete nullable method-row analyzer suppression by
@thomhurst in thomhurst/TUnit#7626
* Infer generic method arguments from instance data sources by
@thomhurst in thomhurst/TUnit#7630
* test: cover discarded method-row lifecycle isolation (#7373) by
@thomhurst in thomhurst/TUnit#7632
* Allow DI scopes to opt out of resolved object ownership by @thomhurst
in thomhurst/TUnit#7633
* Give TestBuilder rows explicit cleanup owners by @thomhurst in
thomhurst/TUnit#7637
* Preserve whole-tuple inference across wrapped and async sources by
@thomhurst in thomhurst/TUnit#7641
* Fix reported compiler warnings in regression fixtures by @thomhurst
in thomhurst/TUnit#7645
* fix(core): track external ownership per row scope by @thomhurst in
thomhurst/TUnit#7635
* Fix remaining regression fixture compiler warnings by @thomhurst in
thomhurst/TUnit#7646
* Fix generic class argument row edge cases by @thomhurst in
thomhurst/TUnit#7647
* Preserve sole-tuple inference and runtime conversion parity by
@thomhurst in thomhurst/TUnit#7643
* Match method data source attributes by fully qualified identity by
@thomhurst in thomhurst/TUnit#7649
* Treat null method data sources as empty in both execution modes by
@thomhurst in thomhurst/TUnit#7652
* Fix xUnit proper-set migration operands and strictness by @thomhurst
in thomhurst/TUnit#7653
* Fix mock setup identifier collisions by @thomhurst in
thomhurst/TUnit#7658
* fix(generator): qualify built-in data-source row classification by
@thomhurst in thomhurst/TUnit#7651
* Capture macOS native runtime crashes for diagnosis by @thomhurst in
thomhurst/TUnit#7659
* Restore nullable diagnostics in mock generated-code regression guards
by @thomhurst in thomhurst/TUnit#7661
* Avoid mock predicate conversion local name collisions by @thomhurst
in thomhurst/TUnit#7655
* Install browsers with the resolved .NET Playwright package by
@thomhurst in thomhurst/TUnit#7673
* Remove nullable and assertion warnings from unit tests by @thomhurst
in thomhurst/TUnit#7670
* Preserve keyword escapes in generated attribute factory type names by
@thomhurst in thomhurst/TUnit#7669
* Fix default mock argument matching by @thomhurst in
thomhurst/TUnit#7676
* Preserve category and property filters on generic discovery failures
by @thomhurst in thomhurst/TUnit#7663
* Preserve keyword escapes in generated type expressions by @thomhurst
in thomhurst/TUnit#7675
* Encapsulate row lifetime and constructor state replay by @thomhurst
in thomhurst/TUnit#7678
* Diagnose unsupported span params on test methods by @thomhurst in
thomhurst/TUnit#7679
... (truncated)
## 1.80.0
<!-- Release notes generated using configuration in .github/release.yml
at v1.80.0 -->
## What's Changed
### Other Changes
* Share evaluated constructor-row state across discovery modes by
@thomhurst in thomhurst/TUnit#7497
* Diagnose static data-source properties in inaccessible containing
types by @thomhurst in thomhurst/TUnit#7503
* Extract typed-row binding and verify invocation parity by @thomhurst
in thomhurst/TUnit#7507
* Accept omitted optional MethodDataSource arguments in TUnit0001 by
@thomhurst in thomhurst/TUnit#7486
* Preserve null-containing tuples from static method data sources by
@thomhurst in thomhurst/TUnit#7469
* Fix dependencies on deferred enumeration tests by @thomhurst in
thomhurst/TUnit#7471
* Preserve DI scope ownership and synchronize concurrent property
registration by @thomhurst in
thomhurst/TUnit#7476
* Infer typed row generic arguments through interfaces and base classes
by @thomhurst in thomhurst/TUnit#7508
* Keep session cleanup from disposing another session’s data sources by
@thomhurst in thomhurst/TUnit#7509
* Fix recursive generated tuple argument conversions by @thomhurst in
thomhurst/TUnit#7515
* Share generic class row selection and pairing policy by @thomhurst in
thomhurst/TUnit#7498
* Raise data-source delegates at test lifecycle stages by @thomhurst in
thomhurst/TUnit#7521
* Fix class argument literals to use constructor parameter types by
@thomhurst in thomhurst/TUnit#7496
* Accept numeric widening for single reference-tuple data parameters by
@thomhurst in thomhurst/TUnit#7510
* fix(core): preserve optional F# async support without AOT warnings by
@thomhurst in thomhurst/TUnit#7526
* Fix timeouts for synchronously blocking test bodies by @thomhurst in
thomhurst/TUnit#7527
* Fix Native AOT getters for generic test class property metadata by
@thomhurst in thomhurst/TUnit#7524
* Refresh stale core generator snapshots by @thomhurst in
thomhurst/TUnit#7549
* Infer generic class types from inherited literal arguments by
@thomhurst in thomhurst/TUnit#7544
* Make duplicate-stop cancellation regression independent of thread-pool
scheduling by @thomhurst in
thomhurst/TUnit#7546
* Fix colliding generator diagnostic IDs by @thomhurst in
thomhurst/TUnit#7538
* Fix generic array binding inside tuple data-source parameters by
@thomhurst in thomhurst/TUnit#7541
* Discover AOT converters from method data source return types by
@thomhurst in thomhurst/TUnit#7547
* Check tuple conversion analyzer policy against runtime binding by
@thomhurst in thomhurst/TUnit#7559
* Deduplicate disposal span callbacks on .NET 8 by @thomhurst in
thomhurst/TUnit#7557
* Preserve generic tuple rows from instance data sources by @thomhurst
in thomhurst/TUnit#7548
* Expect source operators to bind in AOT in the tuple conversion matrix
by @thomhurst in thomhurst/TUnit#7580
* Preserve containing generic types in TUnit0001 diagnostics by
@thomhurst in thomhurst/TUnit#7563
* Populate reflection class property metadata by @thomhurst in
thomhurst/TUnit#7550
* Verify every generic class/method argument pair executes once by
@thomhurst in thomhurst/TUnit#7558
* Exclude indexers from generated class property metadata by @thomhurst
in thomhurst/TUnit#7560
* Fix synchronous factory timeout cancellation classification by
@thomhurst in thomhurst/TUnit#7561
* Add packaged F# async trimming smoke coverage by @thomhurst in
thomhurst/TUnit#7562
* Remove unused metadata generation entry points by @thomhurst in
thomhurst/TUnit#7570
* Remove unused streaming test builder path by @thomhurst in
thomhurst/TUnit#7535
* Isolate test registration callback failures by @thomhurst in
thomhurst/TUnit#7556
### Dependencies
* Update mcr.microsoft.com/dotnet/sdk Docker tag to v11 by @thomhurst
in thomhurst/TUnit#7513
* Update dependency Microsoft.Kiota.Abstractions to 2.1.6 by @thomhurst
in thomhurst/TUnit#7512
* Update all non-major dependencies to 1.79.0 by @thomhurst in
thomhurst/TUnit#7528
* Update all non-major dependencies by @thomhurst in
thomhurst/TUnit#7536
**Full Changelog**:
thomhurst/TUnit@v1.79.0...v1.80.0
## 1.79.0
<!-- Release notes generated using configuration in .github/release.yml
at v1.79.0 -->
## What's Changed
### Other Changes
* test(sourcegen): parse fixtures as a real build in all generator test
harnesses by @thomhurst in thomhurst/TUnit#7319
* test(sourcegen): fix net472 compile of AotConverterScanTests
obsolete-conversion fixture by @thomhurst in
thomhurst/TUnit#7330
* fix(sourcegen): emit typeof(Nullable<>) for a T? parameter of a
generic test method by @thomhurst in
thomhurst/TUnit#7322
* test: fix ClassDataSourceTupleTests to exercise class-level tuple
unwrapping by @thomhurst in
thomhurst/TUnit#7318
* fix(fsharp): pin FSharp.Core in TUnit.Assertions.FSharp independent of
the building SDK by @thomhurst in
thomhurst/TUnit#7321
* fix(sourcegen): pick MethodDataSource overloads declared on base types
like reflection by @thomhurst in
thomhurst/TUnit#7323
* fix(reflection): close generic methods over a typed data source's
declared types without [GenerateGenericTest] by @thomhurst in
thomhurst/TUnit#7324
* fix(engine): run every overload of a [Test] method in filtered runs by
@thomhurst in thomhurst/TUnit#7332
* fix: bind a tuple row whole to a tuple parameter followed by optional
parameters by @thomhurst in
thomhurst/TUnit#7341
* fix(core): keep and dispose data-source roots when object-graph
tracking throws by @thomhurst in
thomhurst/TUnit#7342
* fix(engine): lower default maximum parallel tests to 2x processor
count by @thomhurst in thomhurst/TUnit#7354
* ci: cut duplicate TFM and packaging work from the Windows and macOS
jobs by @thomhurst in thomhurst/TUnit#7357
* ci: run engine tests in their own job and drop the per-child test-host
relaunch by @thomhurst in thomhurst/TUnit#7364
* fix(sourcegen): split untyped class data source rows by the generic
class type they infer by @thomhurst in
thomhurst/TUnit#7339
* fix(engine): read a generic class's own class-level [MethodDataSource]
member on the closed class by @thomhurst in
thomhurst/TUnit#7336
* fix(analyzers): TUnit0001 unwraps only the Func/TestDataRow layers the
runtime removes by @thomhurst in
thomhurst/TUnit#7347
* test: make SharedType.None leakage tests independent of build order by
@thomhurst in thomhurst/TUnit#7385
* fix(generic): infer method type arguments from [Arguments<T>] rows in
both modes by @thomhurst in
thomhurst/TUnit#7343
* fix(generic): infer class type arguments through T[] constructor
parameters from any class row by @thomhurst in
thomhurst/TUnit#7346
* fix(engine): await the Task of async runtime dynamic tests by
@thomhurst in thomhurst/TUnit#7363
* feat(engine): add dispose spans for shared data-source objects by
@thomhurst in thomhurst/TUnit#7396
* fix(engine): stop copying build-time output to TestSessionContext by
@thomhurst in thomhurst/TUnit#7397
* feat(mocks): argument-aware Returns for Task/ValueTask members by
@thomhurst in thomhurst/TUnit#7404
* fix(generic): a type-free class [Arguments] row lets method rows infer
T, with matching constructor binding in both modes by @thomhurst in
thomhurst/TUnit#7392
* feat(scripts): finish open loop PRs before starting new issues by
@thomhurst in thomhurst/TUnit#7423
* fix(mocks): preserve nullable generic constraints by @thomhurst in
thomhurst/TUnit#7414
* Retain class sources sharing an inferred generic instantiation by
@thomhurst in thomhurst/TUnit#7420
* Fix reflection data source overloads with omitted optional arguments
by @thomhurst in thomhurst/TUnit#7421
* feat(playwright): honor HEADED and BROWSER environment variables by
@thomhurst in thomhurst/TUnit#7395
* docs: enable Windows long paths before worktree checkout by
@thomhurst in thomhurst/TUnit#7416
* Fix duplicate dynamic builder invocation in reflection mode by
@thomhurst in thomhurst/TUnit#7424
* fix(mocks): bind explicit method type arguments on
Mock.Of<IGeneric<X>>() by @thomhurst in
thomhurst/TUnit#7406
* fix(mocks): Is<T>(predicate) passes T, not T?, for non-nullable T by
@thomhurst in thomhurst/TUnit#7405
* fix(engine): deliver row builder-context events to the test and raise
OnDispose once per test (#7381) by @thomhurst in
thomhurst/TUnit#7384
* fix: report generic classes whose data cannot infer types at compile
time by @thomhurst in thomhurst/TUnit#7425
* fix(core): hold shared instances fetched while runtime tests register
by @thomhurst in thomhurst/TUnit#7391
* fix(mocks): match null literals in generated predicate overloads by
@thomhurst in thomhurst/TUnit#7415
* fix(mocks): qualify extern-aliased types with their alias in generated
code by @thomhurst in thomhurst/TUnit#7403
* fix(generic): fail wrongly sized [GenerateGenericTest] in
source-generated mode by @thomhurst in
thomhurst/TUnit#7344
* fix(sourcegen): generate a data source factory for
[InstanceMethodDataSource] (#7225) by @thomhurst in
thomhurst/TUnit#7348
* fix(aspire): preserve caller cancellation over startup cleanup faults
by @thomhurst in thomhurst/TUnit#7447
* fix(tests): remove polling throughput requirement on shared runners by
@thomhurst in thomhurst/TUnit#7448
* fix(html-reporter): scope report state per session when sessions
overlap by @thomhurst in thomhurst/TUnit#7400
* fix(analyzers): validate class data against TestConstructor by
@thomhurst in thomhurst/TUnit#7449
* Infer generic method types from typed array rows in both discovery
modes by @thomhurst in thomhurst/TUnit#7460
* Share generic method inference policy between discovery modes by
@thomhurst in thomhurst/TUnit#7455
... (truncated)
Commits viewable in [compare
view](thomhurst/TUnit@v1.78.0...v1.81.10).
</details>
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Updated [TUnit.Core](https://github.com/thomhurst/TUnit) from 1.78.0 to
1.81.16.
<details>
<summary>Release notes</summary>
_Sourced from [TUnit.Core's
releases](https://github.com/thomhurst/TUnit/releases)._
## 1.81.16
<!-- Release notes generated using configuration in .github/release.yml
at v1.81.16 -->
## What's Changed
### Other Changes
* fix: allow null non-generic IEnumerable in Assert.That (#7698) by
@thomhurst in thomhurst/TUnit#7699
### Dependencies
* Update all non-major dependencies by @thomhurst in
thomhurst/TUnit#7693
* Update all non-major dependencies to 8.9.1 by @thomhurst in
thomhurst/TUnit#7694
* Update all non-major dependencies to 4.0.3 by @thomhurst in
thomhurst/TUnit#7697
**Full Changelog**:
thomhurst/TUnit@v1.81.10...v1.81.16
## 1.81.10
<!-- Release notes generated using configuration in .github/release.yml
at v1.81.10 -->
## What's Changed
### Other Changes
* Preserve private type values in generated executable test attributes
by @thomhurst in thomhurst/TUnit#7667
* feat(sourcegen): inherit XML docs from [AssertionExtension] classes by
@JohnVerheij in thomhurst/TUnit#7692
### Dependencies
* Update all non-major dependencies to 1.81.5 by @thomhurst in
thomhurst/TUnit#7690
**Full Changelog**:
thomhurst/TUnit@v1.81.5...v1.81.10
## 1.81.5
<!-- Release notes generated using configuration in .github/release.yml
at v1.81.5 -->
## What's Changed
### Other Changes
* feat(sourcegen): inherit XML docs from [GenerateAssertion] source
methods by @JohnVerheij in thomhurst/TUnit#7687
* fix(mocks): stop verification leaving setups on void-shaped members by
@thomhurst in thomhurst/TUnit#7688
### Dependencies
* Update all non-major dependencies by @thomhurst in
thomhurst/TUnit#7681
* Update dependency OpenTelemetry.Instrumentation.AspNetCore to 1.20.2
by @thomhurst in thomhurst/TUnit#7685
**Full Changelog**:
thomhurst/TUnit@v1.81.0...v1.81.5
## 1.81.0
<!-- Release notes generated using configuration in .github/release.yml
at v1.81.0 -->
## What's Changed
### Other Changes
* Extract Windows engine hang dump stacks in CI by @thomhurst in
thomhurst/TUnit#7584
* Cut STAThreadTests repeats so the Windows reflection pass run fits its
timeout by @thomhurst in thomhurst/TUnit#7594
* Preserve expected-value semantics when migrating xUnit Assert.Single
by @thomhurst in thomhurst/TUnit#7586
* Capture Windows loader ownership and thread CPU times by @thomhurst
in thomhurst/TUnit#7603
* Isolate the full passing engine session from sibling test processes by
@thomhurst in thomhurst/TUnit#7606
* Remove unused concrete metadata generation chain by @thomhurst in
thomhurst/TUnit#7569
* Avoid temporary arrays in singleton tuple binding by @thomhurst in
thomhurst/TUnit#7583
* Fix ParallelTests overlap assertion for late repetitions by
@thomhurst in thomhurst/TUnit#7600
* Fix nullable generic class method-row analyzer validation by
@thomhurst in thomhurst/TUnit#7613
* Fix generated property injection into boxed structs by @thomhurst in
thomhurst/TUnit#7612
* Make Playwright template navigation deterministic by @thomhurst in
thomhurst/TUnit#7604
* Release objects and complete teardown for dependency-skipped tests by
@thomhurst in thomhurst/TUnit#7605
* Support typed tuple rows before optional parameters by @thomhurst in
thomhurst/TUnit#7608
* Cover null rows in generic class type inference by @thomhurst in
thomhurst/TUnit#7621
* Skip certificate trust preparation for HTTP-only Aspire test resources
by @thomhurst in thomhurst/TUnit#7618
* Accept convertible typed rows before optional test parameters by
@thomhurst in thomhurst/TUnit#7619
* Preserve nullable class discovery parity and constructor precedence by
@thomhurst in thomhurst/TUnit#7614
* Preserve whole tuple rows before omitted trailing arrays by
@thomhurst in thomhurst/TUnit#7625
* Fix reflection inference for concrete params arrays by @thomhurst in
thomhurst/TUnit#7627
* Remove obsolete nullable method-row analyzer suppression by
@thomhurst in thomhurst/TUnit#7626
* Infer generic method arguments from instance data sources by
@thomhurst in thomhurst/TUnit#7630
* test: cover discarded method-row lifecycle isolation (#7373) by
@thomhurst in thomhurst/TUnit#7632
* Allow DI scopes to opt out of resolved object ownership by @thomhurst
in thomhurst/TUnit#7633
* Give TestBuilder rows explicit cleanup owners by @thomhurst in
thomhurst/TUnit#7637
* Preserve whole-tuple inference across wrapped and async sources by
@thomhurst in thomhurst/TUnit#7641
* Fix reported compiler warnings in regression fixtures by @thomhurst
in thomhurst/TUnit#7645
* fix(core): track external ownership per row scope by @thomhurst in
thomhurst/TUnit#7635
* Fix remaining regression fixture compiler warnings by @thomhurst in
thomhurst/TUnit#7646
* Fix generic class argument row edge cases by @thomhurst in
thomhurst/TUnit#7647
* Preserve sole-tuple inference and runtime conversion parity by
@thomhurst in thomhurst/TUnit#7643
* Match method data source attributes by fully qualified identity by
@thomhurst in thomhurst/TUnit#7649
* Treat null method data sources as empty in both execution modes by
@thomhurst in thomhurst/TUnit#7652
* Fix xUnit proper-set migration operands and strictness by @thomhurst
in thomhurst/TUnit#7653
* Fix mock setup identifier collisions by @thomhurst in
thomhurst/TUnit#7658
* fix(generator): qualify built-in data-source row classification by
@thomhurst in thomhurst/TUnit#7651
* Capture macOS native runtime crashes for diagnosis by @thomhurst in
thomhurst/TUnit#7659
* Restore nullable diagnostics in mock generated-code regression guards
by @thomhurst in thomhurst/TUnit#7661
* Avoid mock predicate conversion local name collisions by @thomhurst
in thomhurst/TUnit#7655
* Install browsers with the resolved .NET Playwright package by
@thomhurst in thomhurst/TUnit#7673
* Remove nullable and assertion warnings from unit tests by @thomhurst
in thomhurst/TUnit#7670
* Preserve keyword escapes in generated attribute factory type names by
@thomhurst in thomhurst/TUnit#7669
* Fix default mock argument matching by @thomhurst in
thomhurst/TUnit#7676
* Preserve category and property filters on generic discovery failures
by @thomhurst in thomhurst/TUnit#7663
* Preserve keyword escapes in generated type expressions by @thomhurst
in thomhurst/TUnit#7675
* Encapsulate row lifetime and constructor state replay by @thomhurst
in thomhurst/TUnit#7678
* Diagnose unsupported span params on test methods by @thomhurst in
thomhurst/TUnit#7679
... (truncated)
## 1.80.0
<!-- Release notes generated using configuration in .github/release.yml
at v1.80.0 -->
## What's Changed
### Other Changes
* Share evaluated constructor-row state across discovery modes by
@thomhurst in thomhurst/TUnit#7497
* Diagnose static data-source properties in inaccessible containing
types by @thomhurst in thomhurst/TUnit#7503
* Extract typed-row binding and verify invocation parity by @thomhurst
in thomhurst/TUnit#7507
* Accept omitted optional MethodDataSource arguments in TUnit0001 by
@thomhurst in thomhurst/TUnit#7486
* Preserve null-containing tuples from static method data sources by
@thomhurst in thomhurst/TUnit#7469
* Fix dependencies on deferred enumeration tests by @thomhurst in
thomhurst/TUnit#7471
* Preserve DI scope ownership and synchronize concurrent property
registration by @thomhurst in
thomhurst/TUnit#7476
* Infer typed row generic arguments through interfaces and base classes
by @thomhurst in thomhurst/TUnit#7508
* Keep session cleanup from disposing another session’s data sources by
@thomhurst in thomhurst/TUnit#7509
* Fix recursive generated tuple argument conversions by @thomhurst in
thomhurst/TUnit#7515
* Share generic class row selection and pairing policy by @thomhurst in
thomhurst/TUnit#7498
* Raise data-source delegates at test lifecycle stages by @thomhurst in
thomhurst/TUnit#7521
* Fix class argument literals to use constructor parameter types by
@thomhurst in thomhurst/TUnit#7496
* Accept numeric widening for single reference-tuple data parameters by
@thomhurst in thomhurst/TUnit#7510
* fix(core): preserve optional F# async support without AOT warnings by
@thomhurst in thomhurst/TUnit#7526
* Fix timeouts for synchronously blocking test bodies by @thomhurst in
thomhurst/TUnit#7527
* Fix Native AOT getters for generic test class property metadata by
@thomhurst in thomhurst/TUnit#7524
* Refresh stale core generator snapshots by @thomhurst in
thomhurst/TUnit#7549
* Infer generic class types from inherited literal arguments by
@thomhurst in thomhurst/TUnit#7544
* Make duplicate-stop cancellation regression independent of thread-pool
scheduling by @thomhurst in
thomhurst/TUnit#7546
* Fix colliding generator diagnostic IDs by @thomhurst in
thomhurst/TUnit#7538
* Fix generic array binding inside tuple data-source parameters by
@thomhurst in thomhurst/TUnit#7541
* Discover AOT converters from method data source return types by
@thomhurst in thomhurst/TUnit#7547
* Check tuple conversion analyzer policy against runtime binding by
@thomhurst in thomhurst/TUnit#7559
* Deduplicate disposal span callbacks on .NET 8 by @thomhurst in
thomhurst/TUnit#7557
* Preserve generic tuple rows from instance data sources by @thomhurst
in thomhurst/TUnit#7548
* Expect source operators to bind in AOT in the tuple conversion matrix
by @thomhurst in thomhurst/TUnit#7580
* Preserve containing generic types in TUnit0001 diagnostics by
@thomhurst in thomhurst/TUnit#7563
* Populate reflection class property metadata by @thomhurst in
thomhurst/TUnit#7550
* Verify every generic class/method argument pair executes once by
@thomhurst in thomhurst/TUnit#7558
* Exclude indexers from generated class property metadata by @thomhurst
in thomhurst/TUnit#7560
* Fix synchronous factory timeout cancellation classification by
@thomhurst in thomhurst/TUnit#7561
* Add packaged F# async trimming smoke coverage by @thomhurst in
thomhurst/TUnit#7562
* Remove unused metadata generation entry points by @thomhurst in
thomhurst/TUnit#7570
* Remove unused streaming test builder path by @thomhurst in
thomhurst/TUnit#7535
* Isolate test registration callback failures by @thomhurst in
thomhurst/TUnit#7556
### Dependencies
* Update mcr.microsoft.com/dotnet/sdk Docker tag to v11 by @thomhurst
in thomhurst/TUnit#7513
* Update dependency Microsoft.Kiota.Abstractions to 2.1.6 by @thomhurst
in thomhurst/TUnit#7512
* Update all non-major dependencies to 1.79.0 by @thomhurst in
thomhurst/TUnit#7528
* Update all non-major dependencies by @thomhurst in
thomhurst/TUnit#7536
**Full Changelog**:
thomhurst/TUnit@v1.79.0...v1.80.0
## 1.79.0
<!-- Release notes generated using configuration in .github/release.yml
at v1.79.0 -->
## What's Changed
### Other Changes
* test(sourcegen): parse fixtures as a real build in all generator test
harnesses by @thomhurst in thomhurst/TUnit#7319
* test(sourcegen): fix net472 compile of AotConverterScanTests
obsolete-conversion fixture by @thomhurst in
thomhurst/TUnit#7330
* fix(sourcegen): emit typeof(Nullable<>) for a T? parameter of a
generic test method by @thomhurst in
thomhurst/TUnit#7322
* test: fix ClassDataSourceTupleTests to exercise class-level tuple
unwrapping by @thomhurst in
thomhurst/TUnit#7318
* fix(fsharp): pin FSharp.Core in TUnit.Assertions.FSharp independent of
the building SDK by @thomhurst in
thomhurst/TUnit#7321
* fix(sourcegen): pick MethodDataSource overloads declared on base types
like reflection by @thomhurst in
thomhurst/TUnit#7323
* fix(reflection): close generic methods over a typed data source's
declared types without [GenerateGenericTest] by @thomhurst in
thomhurst/TUnit#7324
* fix(engine): run every overload of a [Test] method in filtered runs by
@thomhurst in thomhurst/TUnit#7332
* fix: bind a tuple row whole to a tuple parameter followed by optional
parameters by @thomhurst in
thomhurst/TUnit#7341
* fix(core): keep and dispose data-source roots when object-graph
tracking throws by @thomhurst in
thomhurst/TUnit#7342
* fix(engine): lower default maximum parallel tests to 2x processor
count by @thomhurst in thomhurst/TUnit#7354
* ci: cut duplicate TFM and packaging work from the Windows and macOS
jobs by @thomhurst in thomhurst/TUnit#7357
* ci: run engine tests in their own job and drop the per-child test-host
relaunch by @thomhurst in thomhurst/TUnit#7364
* fix(sourcegen): split untyped class data source rows by the generic
class type they infer by @thomhurst in
thomhurst/TUnit#7339
* fix(engine): read a generic class's own class-level [MethodDataSource]
member on the closed class by @thomhurst in
thomhurst/TUnit#7336
* fix(analyzers): TUnit0001 unwraps only the Func/TestDataRow layers the
runtime removes by @thomhurst in
thomhurst/TUnit#7347
* test: make SharedType.None leakage tests independent of build order by
@thomhurst in thomhurst/TUnit#7385
* fix(generic): infer method type arguments from [Arguments<T>] rows in
both modes by @thomhurst in
thomhurst/TUnit#7343
* fix(generic): infer class type arguments through T[] constructor
parameters from any class row by @thomhurst in
thomhurst/TUnit#7346
* fix(engine): await the Task of async runtime dynamic tests by
@thomhurst in thomhurst/TUnit#7363
* feat(engine): add dispose spans for shared data-source objects by
@thomhurst in thomhurst/TUnit#7396
* fix(engine): stop copying build-time output to TestSessionContext by
@thomhurst in thomhurst/TUnit#7397
* feat(mocks): argument-aware Returns for Task/ValueTask members by
@thomhurst in thomhurst/TUnit#7404
* fix(generic): a type-free class [Arguments] row lets method rows infer
T, with matching constructor binding in both modes by @thomhurst in
thomhurst/TUnit#7392
* feat(scripts): finish open loop PRs before starting new issues by
@thomhurst in thomhurst/TUnit#7423
* fix(mocks): preserve nullable generic constraints by @thomhurst in
thomhurst/TUnit#7414
* Retain class sources sharing an inferred generic instantiation by
@thomhurst in thomhurst/TUnit#7420
* Fix reflection data source overloads with omitted optional arguments
by @thomhurst in thomhurst/TUnit#7421
* feat(playwright): honor HEADED and BROWSER environment variables by
@thomhurst in thomhurst/TUnit#7395
* docs: enable Windows long paths before worktree checkout by
@thomhurst in thomhurst/TUnit#7416
* Fix duplicate dynamic builder invocation in reflection mode by
@thomhurst in thomhurst/TUnit#7424
* fix(mocks): bind explicit method type arguments on
Mock.Of<IGeneric<X>>() by @thomhurst in
thomhurst/TUnit#7406
* fix(mocks): Is<T>(predicate) passes T, not T?, for non-nullable T by
@thomhurst in thomhurst/TUnit#7405
* fix(engine): deliver row builder-context events to the test and raise
OnDispose once per test (#7381) by @thomhurst in
thomhurst/TUnit#7384
* fix: report generic classes whose data cannot infer types at compile
time by @thomhurst in thomhurst/TUnit#7425
* fix(core): hold shared instances fetched while runtime tests register
by @thomhurst in thomhurst/TUnit#7391
* fix(mocks): match null literals in generated predicate overloads by
@thomhurst in thomhurst/TUnit#7415
* fix(mocks): qualify extern-aliased types with their alias in generated
code by @thomhurst in thomhurst/TUnit#7403
* fix(generic): fail wrongly sized [GenerateGenericTest] in
source-generated mode by @thomhurst in
thomhurst/TUnit#7344
* fix(sourcegen): generate a data source factory for
[InstanceMethodDataSource] (#7225) by @thomhurst in
thomhurst/TUnit#7348
* fix(aspire): preserve caller cancellation over startup cleanup faults
by @thomhurst in thomhurst/TUnit#7447
* fix(tests): remove polling throughput requirement on shared runners by
@thomhurst in thomhurst/TUnit#7448
* fix(html-reporter): scope report state per session when sessions
overlap by @thomhurst in thomhurst/TUnit#7400
* fix(analyzers): validate class data against TestConstructor by
@thomhurst in thomhurst/TUnit#7449
* Infer generic method types from typed array rows in both discovery
modes by @thomhurst in thomhurst/TUnit#7460
* Share generic method inference policy between discovery modes by
@thomhurst in thomhurst/TUnit#7455
... (truncated)
Commits viewable in [compare
view](thomhurst/TUnit@v1.78.0...v1.81.16).
</details>
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extract the analyzer's closed-signature typed-row binding calculation into
TypedRowParameterBinding, next to the linked inference helper. Keep the existing conversion, optional omission and declared-position token rules unchanged.Add compiled parity coverage that checks expected validation types, inference success versus null in both discovery modes, and concrete results from generated argument expressions and the reflection invoker. Cover omitted optional arguments and trailing arrays, packed and nested arrays, element conversions, loose trailing values, injected versus inferred CancellationTokens, and all five supported params collection interfaces. Compare collection support with both invocation implementations, including unsupported concrete collections and spans.
Closes #7465
Validation (SDK 10.0.403, net10.0, macOS arm64):
git diff --checkpassed.No generator output, shipped public API, reflection path or discovery behavior changes. Existing build warnings are tracked in #7410 and #7412.
Summary by CodeRabbit
paramsor array arguments.