Skip to content

Upgrade xunit.runner.visualstudio to 3.0.2#15651

Merged
akoeplinger merged 5 commits intomainfrom
upgrade-xunit
Mar 20, 2025
Merged

Upgrade xunit.runner.visualstudio to 3.0.2#15651
akoeplinger merged 5 commits intomainfrom
upgrade-xunit

Conversation

@akoeplinger
Copy link
Member

Should help with dotnet/runtime#60550 (comment)

/cc @tmds

@akoeplinger akoeplinger requested a review from ViktorHofer March 18, 2025 11:30
Copy link
Member

@ViktorHofer ViktorHofer left a comment

Choose a reason for hiding this comment

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

Nearly all of the netfx test projects in runtime target net462. This change will break them. Please try this out in runtime.

FWIW the recommended fix that Brad told is to make sure that xunit.console and xunit.runner.visualstudio aren't both put into the app output directory.

@akoeplinger
Copy link
Member Author

akoeplinger commented Mar 18, 2025

I think if I remember correctly it wasn't about having both files but referencing different versions. I'll try it out in runtime.

@tmds
Copy link
Member

tmds commented Mar 18, 2025

xunit.console isn't present under the runtime/artifacts directory.

@akoeplinger @ViktorHofer let me know if you want me to try something.

@ViktorHofer
Copy link
Member

ViktorHofer commented Mar 18, 2025

I think if I remember correctly it wasn't about having both files but referencing different versions

See dotnet/runtime#94183 (comment).

If you're copying the contents of xunit.console's NuGet package into your test output folder, you should stop doing that.

I thought that we fixed this in runtime. cc @ericstj

@tmds
Copy link
Member

tmds commented Mar 18, 2025

If you're copying the contents of xunit.console's NuGet package into your test output folder, you should stop doing that.

This is what is there:

$ ls xunit*.dll
xunit.abstractions.dll  xunit.core.dll              xunit.runner.reporters.netcoreapp10.dll  xunit.runner.visualstudio.testadapter.dll
xunit.assert.dll        xunit.execution.dotnet.dll  xunit.runner.utility.netcoreapp10.dll

The xunit.runner.*.dll are coming from xunit.runner.visualstudio/2.8.2.

@akoeplinger
Copy link
Member Author

@ViktorHofer I think that issue is a different one.

I did try this change in runtime and it indeed fails due to the net472 vs net462 TFM mismatch. I verified it does work in VS with the new package version though if we'd change the TFM to net472.

I pushed a change to only use the new version when TargetFrameworkIdentifier != .NETFramework.

Note that we'll have the same issue in the future if we upgrade to xunit v3 since it also targets net472.

@akoeplinger akoeplinger requested a review from ViktorHofer March 18, 2025 16:36
Comment on lines 90 to 92
<XUnitRunnerVisualStudioVersionForNetFramework Condition="'$(XUnitRunnerVisualStudioVersionForNetFramework)' == '' and '$(XUnitRunnerVisualStudioVersion)' == ''">2.8.2</XUnitRunnerVisualStudioVersionForNetFramework>
<XUnitRunnerVisualStudioVersionForNetFramework Condition="'$(XUnitRunnerVisualStudioVersionForNetFramework)' == '' and '$(XUnitRunnerVisualStudioVersion)' != ''">$(XUnitRunnerVisualStudioVersion)</XUnitRunnerVisualStudioVersionForNetFramework>
<XUnitRunnerVisualStudioVersion Condition="'$(XUnitRunnerVisualStudioVersion)' == ''">3.0.2</XUnitRunnerVisualStudioVersion>
Copy link
Member

Choose a reason for hiding this comment

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

Consider adding a comment explaining the split. Can this get reverted at some point?

Copy link
Member Author

Choose a reason for hiding this comment

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

Will add a comment. This can get reverted once we no longer need to support < net472 TFMs that use the package since I tested the new package works fine on net472+.

I'm actually not sure how many repos besides runtime would hit this.

Copy link
Member

@ViktorHofer ViktorHofer Mar 18, 2025

Choose a reason for hiding this comment

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

I spoke with others offline and we believe it's fine to update the .NET Framework tests in runtime to net481 (NetFrameworkCurrent). I agree that this should be done anyway to allow the usage of xunit v3.

Even though the tests target net462, the actual runtime used is always net481 on our local boxes and on CI. The quirk behavior might be slightly different but tests will highlight that.

I might look into this when I have some time.

@tmds
Copy link
Member

tmds commented Mar 20, 2025

Is this good to merge?

@akoeplinger
Copy link
Member Author

@ViktorHofer do you still want to go with the separate versions for the arcade defaults or should we just use the new version once dotnet/runtime#113667 is in?

@ViktorHofer
Copy link
Member

I would consolidate the versions and then follow-up with the repos that have .NET Framework tests (at least the VMR repos).

@akoeplinger akoeplinger merged commit 3651c2a into main Mar 20, 2025
11 checks passed
@akoeplinger akoeplinger deleted the upgrade-xunit branch March 20, 2025 22:08
@tmds
Copy link
Member

tmds commented Mar 21, 2025

Thank you for looking into this @ViktorHofer and @akoeplinger!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants