Add `net8.0`, Stability for 3rd Party Test Runners
Add Target Framework net8.0 and Adapt to Modern Tooling
-
#298 While consumers could already target
net8.0
themselves, officially targeting this lets us adapt to a few changes in .NET, primarily around our ability to provide test failure stack traces that omit distracting test runner implementation details. -
#297 Enable "Artifacts Output Layout". While this only affects use of this repo, it helped to prove that end users can opt into this feature as well without breaking Fixie's ability to locate and run your test assemblies in their new location.
-
295925f NuGet packages include the README document.
-
#303 Modernize NuGet Packages to meet the latest guidance in the .NET 8 era:
- Enable Source Link.
- Publish a separate symbols package, using the modern supported snupkg format.
- Avoid redundantly embedding symbols in the dlls.
- Enable "Deterministic Builds" at CI time.
Stability for 3rd Party Test Runners
Third party test runners such as those provided by ReSharper or Rider can have varying support for the full VSTest API, and may encounter regressions of their own over time. In this version, we phased out some insufficient workarounds and improved the ability to detect and react to known problem areas.
-
#300 Phase out in-process Test Adapter runs. Our use of in-process Test Adapter runs was always a workaround for problematic third party test runners who fail to attach a debugger, and was in fact insufficient in real world projects. End users using JetBrains test runners could experience wildly inconsistent behavior around loading dependent assemblies with no clear path to success. We removed the workaround since it was not in fact working around anything.
-
#302 Instead of the poor workaround removed in #300, the Test Adapter now detects when a third party fails to attach a debugger, and presents the user with feedback in the test results tree:
- Exactly what went wrong, preventing their breakpoint from being hit.
- Exactly what to do right now to hit their breakpoint and get back to the task at hand.
- Exactly what evidence to provide to the third party test runner's development team, to guide them towards complete compatibility with the API defined by the VSTest team.
- This should help to keep end users unblocked and to prevent Issues from being submitted to the wrong repo.
-
0d813f5 Phase out deprecated use of the difficult-to-format
ProcessStartInfo.Arguments
string, instead using its replacementArgumentList
property. Reduces the risk of command line argument serialization errors across varying operating systems.
Other Fixes
-
--tests
Command Line Argument:-
dfcbc35 Rename the environment variable which supports the
--tests
command line argument, for consistency with other environment variables and to avoid any debate over whether ":" is a valid environment variable name character in cross-platform scenarios. -
7e5da96 When the
--tests
filtering argument is provided but matches zero tests, run zero tests and accurately report that as a failure instead of accidentally running ALL tests. -
#304 Fix
--tests
pattern matching semantics.
-
-
17d5c63 Change fatal error exit code from -1, which is nonstandard/mishandled/misreported on some platforms, to 2. -1 can be received by the calling process as 255 on Linux, for instance, because the platform has rules around exit codes being treated as unsigned and having only certain bits treated as the exit code.
-
76d926b When resolving generic arguments for parameterized tests, support passing a concrete value to
Nullable<T>
parameters by inferringT
to be that concrete value's type. -
#305 Custom
IExecution
can emit "Test Started" events. This is useful for customIExecution
implementations that take fine-grained control over the test lifecycle, allowing IDE runs to display a spinner on long-running tests just like you already get for otherIExecution
.