Repository navigation
Releases
Releases · thomhurst/TUnit
1.83.8
What's Changed
Other Changes
- build: turn runtime async off by @thomhurst in #7720
- perf: compile engine startup methods on a background thread by @thomhurst in #7721
Dependencies
- chore(deps): update all non-major dependencies by @thomhurst in #7710
- chore(deps): update all non-major dependencies by @thomhurst in #7712
- chore(deps): update dependency microsoft.templateengine.authoring.cli to v11 by @thomhurst in #7716
- chore(deps): update dependency nuget.protocol to v8 by @thomhurst in #7719
Full Changelog: v1.83.0...v1.83.8
1.83.0
What's Changed
Other Changes
- docs: add xUnit v3 (AOT) column to README benchmark table by @thomhurst in #7700
- feat!: drop net8.0 and net9.0, add net11.0 and enable runtime async by @thomhurst in #7705
- ci: opt out of dotnet CLI telemetry in speed comparison by @thomhurst in #7707
- docs: redesign the homepage and refresh site styling by @thomhurst in #7708
Dependencies
- Update all non-major dependencies to 1.81.16 by @thomhurst in #7701
- chore(deps): update dependency dotnet-sdk to v11 by @thomhurst in #7711
Full Changelog: v1.81.16...v1.83.0
1.81.16
What's Changed
Other Changes
- fix: allow null non-generic IEnumerable in Assert.That (#7698) by @thomhurst in #7699
Dependencies
- Update all non-major dependencies by @thomhurst in #7693
- Update all non-major dependencies to 8.9.1 by @thomhurst in #7694
- Update all non-major dependencies to 4.0.3 by @thomhurst in #7697
Full Changelog: v1.81.10...v1.81.16
1.81.10
What's Changed
Other Changes
- Preserve private type values in generated executable test attributes by @thomhurst in #7667
- feat(sourcegen): inherit XML docs from [AssertionExtension] classes by @JohnVerheij in #7692
Dependencies
- Update all non-major dependencies to 1.81.5 by @thomhurst in #7690
Full Changelog: v1.81.5...v1.81.10
1.81.5
What's Changed
Other Changes
- feat(sourcegen): inherit XML docs from [GenerateAssertion] source methods by @JohnVerheij in #7687
- fix(mocks): stop verification leaving setups on void-shaped members by @thomhurst in #7688
Dependencies
- Update all non-major dependencies by @thomhurst in #7681
- Update dependency OpenTelemetry.Instrumentation.AspNetCore to 1.20.2 by @thomhurst in #7685
Full Changelog: v1.81.0...v1.81.5
1.81.0
What's Changed
Other Changes
- Extract Windows engine hang dump stacks in CI by @thomhurst in #7584
- Cut STAThreadTests repeats so the Windows reflection pass run fits its timeout by @thomhurst in #7594
- Preserve expected-value semantics when migrating xUnit Assert.Single by @thomhurst in #7586
- Capture Windows loader ownership and thread CPU times by @thomhurst in #7603
- Isolate the full passing engine session from sibling test processes by @thomhurst in #7606
- Remove unused concrete metadata generation chain by @thomhurst in #7569
- Avoid temporary arrays in singleton tuple binding by @thomhurst in #7583
- Fix ParallelTests overlap assertion for late repetitions by @thomhurst in #7600
- Fix nullable generic class method-row analyzer validation by @thomhurst in #7613
- Fix generated property injection into boxed structs by @thomhurst in #7612
- Make Playwright template navigation deterministic by @thomhurst in #7604
- Release objects and complete teardown for dependency-skipped tests by @thomhurst in #7605
- Support typed tuple rows before optional parameters by @thomhurst in #7608
- Cover null rows in generic class type inference by @thomhurst in #7621
- Skip certificate trust preparation for HTTP-only Aspire test resources by @thomhurst in #7618
- Accept convertible typed rows before optional test parameters by @thomhurst in #7619
- Preserve nullable class discovery parity and constructor precedence by @thomhurst in #7614
- Preserve whole tuple rows before omitted trailing arrays by @thomhurst in #7625
- Fix reflection inference for concrete params arrays by @thomhurst in #7627
- Remove obsolete nullable method-row analyzer suppression by @thomhurst in #7626
- Infer generic method arguments from instance data sources by @thomhurst in #7630
- test: cover discarded method-row lifecycle isolation (#7373) by @thomhurst in #7632
- Allow DI scopes to opt out of resolved object ownership by @thomhurst in #7633
- Give TestBuilder rows explicit cleanup owners by @thomhurst in #7637
- Preserve whole-tuple inference across wrapped and async sources by @thomhurst in #7641
- Fix reported compiler warnings in regression fixtures by @thomhurst in #7645
- fix(core): track external ownership per row scope by @thomhurst in #7635
- Fix remaining regression fixture compiler warnings by @thomhurst in #7646
- Fix generic class argument row edge cases by @thomhurst in #7647
- Preserve sole-tuple inference and runtime conversion parity by @thomhurst in #7643
- Match method data source attributes by fully qualified identity by @thomhurst in #7649
- Treat null method data sources as empty in both execution modes by @thomhurst in #7652
- Fix xUnit proper-set migration operands and strictness by @thomhurst in #7653
- Fix mock setup identifier collisions by @thomhurst in #7658
- fix(generator): qualify built-in data-source row classification by @thomhurst in #7651
- Capture macOS native runtime crashes for diagnosis by @thomhurst in #7659
- Restore nullable diagnostics in mock generated-code regression guards by @thomhurst in #7661
- Avoid mock predicate conversion local name collisions by @thomhurst in #7655
- Install browsers with the resolved .NET Playwright package by @thomhurst in #7673
- Remove nullable and assertion warnings from unit tests by @thomhurst in #7670
- Preserve keyword escapes in generated attribute factory type names by @thomhurst in #7669
- Fix default mock argument matching by @thomhurst in #7676
- Preserve category and property filters on generic discovery failures by @thomhurst in #7663
- Preserve keyword escapes in generated type expressions by @thomhurst in #7675
- Encapsulate row lifetime and constructor state replay by @thomhurst in #7678
- Diagnose unsupported span params on test methods by @thomhurst in #7679
- Honor inherited tests on generic classes in reflection discovery by @thomhurst in #7665
Dependencies
- Update all non-major dependencies by @thomhurst in #7593
Full Changelog: v1.80.0...v1.81.0
1.80.0
What's Changed
Other Changes
- Share evaluated constructor-row state across discovery modes by @thomhurst in #7497
- Diagnose static data-source properties in inaccessible containing types by @thomhurst in #7503
- Extract typed-row binding and verify invocation parity by @thomhurst in #7507
- Accept omitted optional MethodDataSource arguments in TUnit0001 by @thomhurst in #7486
- Preserve null-containing tuples from static method data sources by @thomhurst in #7469
- Fix dependencies on deferred enumeration tests by @thomhurst in #7471
- Preserve DI scope ownership and synchronize concurrent property registration by @thomhurst in #7476
- Infer typed row generic arguments through interfaces and base classes by @thomhurst in #7508
- Keep session cleanup from disposing another session’s data sources by @thomhurst in #7509
- Fix recursive generated tuple argument conversions by @thomhurst in #7515
- Share generic class row selection and pairing policy by @thomhurst in #7498
- Raise data-source delegates at test lifecycle stages by @thomhurst in #7521
- Fix class argument literals to use constructor parameter types by @thomhurst in #7496
- Accept numeric widening for single reference-tuple data parameters by @thomhurst in #7510
- fix(core): preserve optional F# async support without AOT warnings by @thomhurst in #7526
- Fix timeouts for synchronously blocking test bodies by @thomhurst in #7527
- Fix Native AOT getters for generic test class property metadata by @thomhurst in #7524
- Refresh stale core generator snapshots by @thomhurst in #7549
- Infer generic class types from inherited literal arguments by @thomhurst in #7544
- Make duplicate-stop cancellation regression independent of thread-pool scheduling by @thomhurst in #7546
- Fix colliding generator diagnostic IDs by @thomhurst in #7538
- Fix generic array binding inside tuple data-source parameters by @thomhurst in #7541
- Discover AOT converters from method data source return types by @thomhurst in #7547
- Check tuple conversion analyzer policy against runtime binding by @thomhurst in #7559
- Deduplicate disposal span callbacks on .NET 8 by @thomhurst in #7557
- Preserve generic tuple rows from instance data sources by @thomhurst in #7548
- Expect source operators to bind in AOT in the tuple conversion matrix by @thomhurst in #7580
- Preserve containing generic types in TUnit0001 diagnostics by @thomhurst in #7563
- Populate reflection class property metadata by @thomhurst in #7550
- Verify every generic class/method argument pair executes once by @thomhurst in #7558
- Exclude indexers from generated class property metadata by @thomhurst in #7560
- Fix synchronous factory timeout cancellation classification by @thomhurst in #7561
- Add packaged F# async trimming smoke coverage by @thomhurst in #7562
- Remove unused metadata generation entry points by @thomhurst in #7570
- Remove unused streaming test builder path by @thomhurst in #7535
- Isolate test registration callback failures by @thomhurst in #7556
Dependencies
- Update mcr.microsoft.com/dotnet/sdk Docker tag to v11 by @thomhurst in #7513
- Update dependency Microsoft.Kiota.Abstractions to 2.1.6 by @thomhurst in #7512
- Update all non-major dependencies to 1.79.0 by @thomhurst in #7528
- Update all non-major dependencies by @thomhurst in #7536
Full Changelog: v1.79.0...v1.80.0
1.79.0
What's Changed
Other Changes
- test(sourcegen): parse fixtures as a real build in all generator test harnesses by @thomhurst in #7319
- test(sourcegen): fix net472 compile of AotConverterScanTests obsolete-conversion fixture by @thomhurst in #7330
- fix(sourcegen): emit typeof(Nullable<>) for a T? parameter of a generic test method by @thomhurst in #7322
- test: fix ClassDataSourceTupleTests to exercise class-level tuple unwrapping by @thomhurst in #7318
- fix(fsharp): pin FSharp.Core in TUnit.Assertions.FSharp independent of the building SDK by @thomhurst in #7321
- fix(sourcegen): pick MethodDataSource overloads declared on base types like reflection by @thomhurst in #7323
- fix(reflection): close generic methods over a typed data source's declared types without [GenerateGenericTest] by @thomhurst in #7324
- fix(engine): run every overload of a [Test] method in filtered runs by @thomhurst in #7332
- fix: bind a tuple row whole to a tuple parameter followed by optional parameters by @thomhurst in #7341
- fix(core): keep and dispose data-source roots when object-graph tracking throws by @thomhurst in #7342
- fix(engine): lower default maximum parallel tests to 2x processor count by @thomhurst in #7354
- ci: cut duplicate TFM and packaging work from the Windows and macOS jobs by @thomhurst in #7357
- ci: run engine tests in their own job and drop the per-child test-host relaunch by @thomhurst in #7364
- fix(sourcegen): split untyped class data source rows by the generic class type they infer by @thomhurst in #7339
- fix(engine): read a generic class's own class-level [MethodDataSource] member on the closed class by @thomhurst in #7336
- fix(analyzers): TUnit0001 unwraps only the Func/TestDataRow layers the runtime removes by @thomhurst in #7347
- test: make SharedType.None leakage tests independent of build order by @thomhurst in #7385
- fix(generic): infer method type arguments from [Arguments] rows in both modes by @thomhurst in #7343
- fix(generic): infer class type arguments through T[] constructor parameters from any class row by @thomhurst in #7346
- fix(engine): await the Task of async runtime dynamic tests by @thomhurst in #7363
- feat(engine): add dispose spans for shared data-source objects by @thomhurst in #7396
- fix(engine): stop copying build-time output to TestSessionContext by @thomhurst in #7397
- feat(mocks): argument-aware Returns for Task/ValueTask members by @thomhurst in #7404
- fix(generic): a type-free class [Arguments] row lets method rows infer T, with matching constructor binding in both modes by @thomhurst in #7392
- feat(scripts): finish open loop PRs before starting new issues by @thomhurst in #7423
- fix(mocks): preserve nullable generic constraints by @thomhurst in #7414
- Retain class sources sharing an inferred generic instantiation by @thomhurst in #7420
- Fix reflection data source overloads with omitted optional arguments by @thomhurst in #7421
- feat(playwright): honor HEADED and BROWSER environment variables by @thomhurst in #7395
- docs: enable Windows long paths before worktree checkout by @thomhurst in #7416
- Fix duplicate dynamic builder invocation in reflection mode by @thomhurst in #7424
- fix(mocks): bind explicit method type arguments on Mock.Of<IGeneric>() by @thomhurst in #7406
- fix(mocks): Is(predicate) passes T, not T?, for non-nullable T by @thomhurst in #7405
- fix(engine): deliver row builder-context events to the test and raise OnDispose once per test (#7381) by @thomhurst in #7384
- fix: report generic classes whose data cannot infer types at compile time by @thomhurst in #7425
- fix(core): hold shared instances fetched while runtime tests register by @thomhurst in #7391
- fix(mocks): match null literals in generated predicate overloads by @thomhurst in #7415
- fix(mocks): qualify extern-aliased types with their alias in generated code by @thomhurst in #7403
- fix(generic): fail wrongly sized [GenerateGenericTest] in source-generated mode by @thomhurst in #7344
- fix(sourcegen): generate a data source factory for [InstanceMethodDataSource] (#7225) by @thomhurst in #7348
- fix(aspire): preserve caller cancellation over startup cleanup faults by @thomhurst in #7447
- fix(tests): remove polling throughput requirement on shared runners by @thomhurst in #7448
- fix(html-reporter): scope report state per session when sessions overlap by @thomhurst in #7400
- fix(analyzers): validate class data against TestConstructor by @thomhurst in #7449
- Infer generic method types from typed array rows in both discovery modes by @thomhurst in #7460
- Share generic method inference policy between discovery modes by @thomhurst in #7455
- Wrap runtime registration holds in an async scope by @thomhurst in #7458
- Preserve generic class source rows and distinguish null collections by @thomhurst in #7453
- Fix TUnit0001 for reference tuple data source rows by @thomhurst in #7457
- Raise issue-pr-loop open-PR limit to 15 by @thomhurst in #7483
- Await resultless ValueTask data sources consistently by @thomhurst in #7478
- Fix internals-access task MSBuild dependency compatibility by @thomhurst in #7479
- fix: dispose session-lifetime DI scopes at session end by @thomhurst in #7459
- Await concurrent ASP.NET Core application disposal by @thomhurst in #7470
- Fix source generation for one-element ValueTuple parameters by @thomhurst in #7467
- Preserve loadable types during dynamic reflection discovery by @thomhurst in #7495
- Set Verify solution context for project-only builds by @thomhurst in #7488
- Fix inherited constructor data in reflection discovery by @thomhurst in #7491
- Fix constructor-order-dependent instance data source diagnostic by @thomhurst in #7502
- Isolate shared disposal span capture by parent activity by @thomhurst in #7492
- Fix preserved generic tuple binding in reflection mode by @thomhurst in #7487
- Fix core generator test nullable and constant-assertion warnings by @thomhurst in #7494
- Fix AutoFixture fixture trimming contracts by @thomhurst in #7500
Dependencies
- chore(deps): update all non-major dependencies by @thomhurst in #7281
- chore(deps): update all non-major dependencies to 1.78.0 by @thomhurst in #7350
- chore(deps): update dependency minimatch to v11.0.4 by @thomhurst in #7393
- chore(deps): update dependency stackexchange.redis to 3.4.31 by @thomhurst in #7407
- chore(deps): update actions/setup-dotnet action to v6.1.0 by @thomhurst in #7464
Full Changelog: v1.78.0...v1.79.0
1.78.0
What's Changed
Other Changes
- fix: Should().HaveSingleItem() returns the single item by @mvanhorn in #7035
- feat(mocks): TM011 analyzer + code fix to declare mocks with the generated mock type by @thomhurst in #7311
- fix(sourcegen): skip [Obsolete(error: true)] conversion operators in AotConverterGenerator by @thomhurst in #7317
Dependencies
- chore(deps): bump joi from 17.13.8 to 17.13.9 in /docs by @dependabot[bot] in #7312
- chore(deps): bump follow-redirects from 1.16.1 to 1.16.2 in /docs by @dependabot[bot] in #7313
Full Changelog: v1.77.0...v1.78.0
1.77.0
What's Changed
Other Changes
- fix(engine): invoke OnTestRegistered on property-injected data sources by @thomhurst in #7292
- fix(sourcegen): globally qualify type names in property injection output by @lucaxchaves in #7291
- test(sourcegen): snapshot property injection output for Core.* namespaces by @thomhurst in #7293
- fix(aspire): detach kept resources from removed resources in ResourcesToRemove by @thomhurst in #7295
- feat(engine): report unobserved task exceptions in session results by @thomhurst in #7296
- fix(mocks): rename method type parameters that collide with the mocked type's by @thomhurst in #7303
- feat(mocks): TM010 analyzer + code fix for Mock.Of() -> T.Mock() by @thomhurst in #7307
- feat(playwright): failure screenshots/traces and shared-browser disconnect diagnostics by @thomhurst in #7309
Full Changelog: v1.76.45...v1.77.0