From be638123935adb09300105f44490328b5bc05726 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 7 Jan 2026 10:04:32 +0000 Subject: [PATCH 1/2] Initial plan From 830811e6bd0221f8ab06bdf476c2d9fdcc1ec306 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 7 Jan 2026 10:31:26 +0000 Subject: [PATCH 2/2] Fix non-serializable test data warnings by adding DisableDiscoveryEnumeration Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com> --- .../Construction/ConstructionEditing_Tests.cs | 4 ++-- .../Definition/DefinitionEditing_Tests.cs | 22 +++++++++---------- .../Definition/ProjectItem_Tests.cs | 2 +- .../Definition/Project_Tests.cs | 4 ++-- .../Graph/GraphLoadedFromSolution_tests.cs | 2 +- .../Graph/IsolateProjects_Tests.cs | 2 +- .../Graph/ProjectGraph_Tests.cs | 10 ++++----- .../Graph/ResultCacheBasedBuilds_Tests.cs | 2 +- src/Shared/UnitTests/FileMatcher_Tests.cs | 2 +- 9 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/Build.OM.UnitTests/Construction/ConstructionEditing_Tests.cs b/src/Build.OM.UnitTests/Construction/ConstructionEditing_Tests.cs index aaa2c454210..81874f5afd2 100644 --- a/src/Build.OM.UnitTests/Construction/ConstructionEditing_Tests.cs +++ b/src/Build.OM.UnitTests/Construction/ConstructionEditing_Tests.cs @@ -869,7 +869,7 @@ public static IEnumerable InsertMetadataElementAfterSiblingsTestData } [Theory] - [MemberData(nameof(InsertMetadataElementAfterSiblingsTestData))] + [MemberData(nameof(InsertMetadataElementAfterSiblingsTestData), DisableDiscoveryEnumeration = true)] public void InsertMetadataElementAfterSiblings(AddMetadata addMetadata, int position, string expectedItem) { Action act = (i, c, r) => { i.InsertAfterChild(c, r); }; @@ -911,7 +911,7 @@ public static IEnumerable InsertMetadataElementBeforeSiblingsTestData } [Theory] - [MemberData(nameof(InsertMetadataElementBeforeSiblingsTestData))] + [MemberData(nameof(InsertMetadataElementBeforeSiblingsTestData), DisableDiscoveryEnumeration = true)] public void InsertMetadataElementBeforeSiblings(AddMetadata addMetadata, int position, string expectedItem) { Action act = (i, c, r) => { i.InsertBeforeChild(c, r); }; diff --git a/src/Build.OM.UnitTests/Definition/DefinitionEditing_Tests.cs b/src/Build.OM.UnitTests/Definition/DefinitionEditing_Tests.cs index 6708096bd7e..2c046dd3f87 100644 --- a/src/Build.OM.UnitTests/Definition/DefinitionEditing_Tests.cs +++ b/src/Build.OM.UnitTests/Definition/DefinitionEditing_Tests.cs @@ -1151,8 +1151,8 @@ public void RenameItem_StillMatchesWildcard() } [Theory] - [MemberData(nameof(ItemElementsThatRequireSplitting))] - [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting))] + [MemberData(nameof(ItemElementsThatRequireSplitting), DisableDiscoveryEnumeration = true)] + [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting), DisableDiscoveryEnumeration = true)] public void RenameThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.Rename("foo"); }); @@ -1284,8 +1284,8 @@ public void ChangeItemTypeOnItemNeedingSplitting() } [Theory] - [MemberData(nameof(ItemElementsThatRequireSplitting))] - [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting))] + [MemberData(nameof(ItemElementsThatRequireSplitting), DisableDiscoveryEnumeration = true)] + [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting), DisableDiscoveryEnumeration = true)] public void ChangeItemTypeThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.ItemType = "foo"; }); @@ -1446,16 +1446,16 @@ public void RemoveItem_IncludingFromIgnoringConditionList() } [Theory] - [MemberData(nameof(ItemElementsThatRequireSplitting))] - [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting))] + [MemberData(nameof(ItemElementsThatRequireSplitting), DisableDiscoveryEnumeration = true)] + [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting), DisableDiscoveryEnumeration = true)] public void RemoveItemThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { p.RemoveItem(i); }); } [Theory] - [MemberData(nameof(ItemElementsThatRequireSplitting))] - [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting))] + [MemberData(nameof(ItemElementsThatRequireSplitting), DisableDiscoveryEnumeration = true)] + [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting), DisableDiscoveryEnumeration = true)] public void RemoveItemsThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { p.RemoveItems(new[] { i }); }); @@ -1654,7 +1654,7 @@ public void RemoveMetadataAfterItemRemoved() } [Theory] - [MemberData(nameof(ItemElementsThatRequireSplitting))] + [MemberData(nameof(ItemElementsThatRequireSplitting), DisableDiscoveryEnumeration = true)] public void RemoveMetadataThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.RemoveMetadata("bar"); }, "bar"); @@ -1743,8 +1743,8 @@ public void SetMetadatumAfterRemoved3() } [Theory] - [MemberData(nameof(ItemElementsThatRequireSplitting))] - [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting))] + [MemberData(nameof(ItemElementsThatRequireSplitting), DisableDiscoveryEnumeration = true)] + [MemberData(nameof(ItemElementsWithGlobsThatRequireSplitting), DisableDiscoveryEnumeration = true)] public void SetMetadataThrowsWhenItemElementSplittingIsDisabled(string projectContents, int itemIndex, SetupProject setupProject) { AssertDisabledItemSplitting(projectContents, itemIndex, setupProject, (p, i) => { i.SetMetadataValue("foo", "bar"); }); diff --git a/src/Build.OM.UnitTests/Definition/ProjectItem_Tests.cs b/src/Build.OM.UnitTests/Definition/ProjectItem_Tests.cs index 75b2e82319d..600f24ad21e 100644 --- a/src/Build.OM.UnitTests/Definition/ProjectItem_Tests.cs +++ b/src/Build.OM.UnitTests/Definition/ProjectItem_Tests.cs @@ -3625,7 +3625,7 @@ public static IEnumerable UpdateAndRemoveShouldWorkWithEscapedCharacte } [Theory] - [MemberData(nameof(UpdateAndRemoveShouldWorkWithEscapedCharactersTestData))] + [MemberData(nameof(UpdateAndRemoveShouldWorkWithEscapedCharactersTestData), DisableDiscoveryEnumeration = true)] public void UpdateAndRemoveShouldWorkWithEscapedCharacters(string projectContents, string include, string update, string remove, string[] expectedInclude, Dictionary[] expectedMetadata) { var formattedProjectContents = string.Format(projectContents, include, update, remove); diff --git a/src/Build.OM.UnitTests/Definition/Project_Tests.cs b/src/Build.OM.UnitTests/Definition/Project_Tests.cs index ca0fc1cde72..d1e43441816 100644 --- a/src/Build.OM.UnitTests/Definition/Project_Tests.cs +++ b/src/Build.OM.UnitTests/Definition/Project_Tests.cs @@ -3065,7 +3065,7 @@ public static IEnumerable GetItemProvenanceByProjectItemTestData } [Theory] - [MemberData(nameof(GetItemProvenanceByProjectItemTestData))] + [MemberData(nameof(GetItemProvenanceByProjectItemTestData), DisableDiscoveryEnumeration = true)] public void GetItemProvenanceByProjectItem(string items, string itemValue, int itemPosition, ProvenanceResultTupleList expected) { var formattedProject = string.Format(ProjectWithItemGroup, items); @@ -3486,7 +3486,7 @@ public static IEnumerable GetItemProvenanceShouldWorkWithEscapedCharac } } [Theory] - [MemberData(nameof(GetItemProvenanceShouldWorkWithEscapedCharactersTestData))] + [MemberData(nameof(GetItemProvenanceShouldWorkWithEscapedCharactersTestData), DisableDiscoveryEnumeration = true)] public void GetItemProvenanceShouldWorkWithEscapedCharacters(string project, string provenanceArgument, ProvenanceResultTupleList expectedProvenance) { AssertProvenanceResult(expectedProvenance, project, provenanceArgument); diff --git a/src/Build.UnitTests/Graph/GraphLoadedFromSolution_tests.cs b/src/Build.UnitTests/Graph/GraphLoadedFromSolution_tests.cs index bcf72ce632a..77e4ffded51 100644 --- a/src/Build.UnitTests/Graph/GraphLoadedFromSolution_tests.cs +++ b/src/Build.UnitTests/Graph/GraphLoadedFromSolution_tests.cs @@ -476,7 +476,7 @@ public static IEnumerable SolutionOnlyDependenciesData } [Theory] - [MemberData(nameof(SolutionOnlyDependenciesData))] + [MemberData(nameof(SolutionOnlyDependenciesData), DisableDiscoveryEnumeration = true)] public void SolutionsCanInjectEdgesIntoTheProjectGraph(Dictionary edges, (int, int)[] solutionDependencies, bool hasCycle, bool solutionEdgesOverlapGraphEdges) { // Use the same global properties as the solution would use so all ConfigurationMetadata objects would match on global properties. diff --git a/src/Build.UnitTests/Graph/IsolateProjects_Tests.cs b/src/Build.UnitTests/Graph/IsolateProjects_Tests.cs index 13bb4275c65..1da40fe77d3 100644 --- a/src/Build.UnitTests/Graph/IsolateProjects_Tests.cs +++ b/src/Build.UnitTests/Graph/IsolateProjects_Tests.cs @@ -484,7 +484,7 @@ public static IEnumerable UndeclaredReferenceEnforcementShouldNormaliz } [Theory] - [MemberData(nameof(UndeclaredReferenceEnforcementShouldNormalizeFilePathsTestData))] + [MemberData(nameof(UndeclaredReferenceEnforcementShouldNormalizeFilePathsTestData), DisableDiscoveryEnumeration = true)] public void UndeclaredReferenceEnforcementShouldNormalizeFilePaths(Func projectReferenceModifier, Func msbuildProjectModifier, string targetName) { AssertBuild(new[] { targetName }, diff --git a/src/Build.UnitTests/Graph/ProjectGraph_Tests.cs b/src/Build.UnitTests/Graph/ProjectGraph_Tests.cs index baf7e0a1ae3..e275395f5f3 100644 --- a/src/Build.UnitTests/Graph/ProjectGraph_Tests.cs +++ b/src/Build.UnitTests/Graph/ProjectGraph_Tests.cs @@ -1804,7 +1804,7 @@ public static IEnumerable Graphs } [Theory] - [MemberData(nameof(Graphs))] + [MemberData(nameof(Graphs), DisableDiscoveryEnumeration = true)] public void TopologicalSortShouldTopologicallySort(Dictionary edges) { using (var env = TestEnvironment.Create()) @@ -1827,7 +1827,7 @@ public void TopologicalSortShouldTopologicallySort(Dictionary edges) } [Theory] - [MemberData(nameof(Graphs))] + [MemberData(nameof(Graphs), DisableDiscoveryEnumeration = true)] public void DotNotationShouldRepresentGraph(Dictionary edges) { var graph = Helpers.CreateProjectGraph( @@ -2320,7 +2320,7 @@ public static IEnumerable AllNodesShouldHaveGraphBuildGlobalPropertyDa } [Theory] - [MemberData(nameof(AllNodesShouldHaveGraphBuildGlobalPropertyData))] + [MemberData(nameof(AllNodesShouldHaveGraphBuildGlobalPropertyData), DisableDiscoveryEnumeration = true)] public void AllNodesShouldHaveGraphBuildGlobalProperty(Dictionary edges, int[] entryPoints, Dictionary globalProperties) { using (var env = TestEnvironment.Create()) @@ -2354,7 +2354,7 @@ public void UserValuesForIsGraphBuildGlobalPropertyShouldBePreserved() } [Theory] - [MemberData(nameof(Graphs))] + [MemberData(nameof(Graphs), DisableDiscoveryEnumeration = true)] public void GraphShouldSupportTransitiveReferences(Dictionary edges) { var graph = Helpers.CreateProjectGraph( @@ -2479,7 +2479,7 @@ public static IEnumerable TransitiveReferencesAreDefinedPerProjectTest } [Theory] - [MemberData(nameof(TransitiveReferencesAreDefinedPerProjectTestData))] + [MemberData(nameof(TransitiveReferencesAreDefinedPerProjectTestData), DisableDiscoveryEnumeration = true)] public void TransitiveReferencesAreDefinedPerProject( Dictionary edges, Dictionary extraContentPerProjectNumber, diff --git a/src/Build.UnitTests/Graph/ResultCacheBasedBuilds_Tests.cs b/src/Build.UnitTests/Graph/ResultCacheBasedBuilds_Tests.cs index f9dd9bf05d4..11033d78af8 100644 --- a/src/Build.UnitTests/Graph/ResultCacheBasedBuilds_Tests.cs +++ b/src/Build.UnitTests/Graph/ResultCacheBasedBuilds_Tests.cs @@ -282,7 +282,7 @@ public static IEnumerable BuildGraphData } [Theory] - [MemberData(nameof(BuildGraphData))] + [MemberData(nameof(BuildGraphData), DisableDiscoveryEnumeration = true)] public void BuildProjectGraphUsingCaches(Dictionary edges) { var topoSortedNodes = diff --git a/src/Shared/UnitTests/FileMatcher_Tests.cs b/src/Shared/UnitTests/FileMatcher_Tests.cs index bf7f53b6bf3..c0bea972965 100644 --- a/src/Shared/UnitTests/FileMatcher_Tests.cs +++ b/src/Shared/UnitTests/FileMatcher_Tests.cs @@ -95,7 +95,7 @@ public void DoNotFollowRecursiveSymlinks() #endif [Theory] - [MemberData(nameof(GetFilesComplexGlobbingMatchingInfo.GetTestData), MemberType = typeof(GetFilesComplexGlobbingMatchingInfo))] + [MemberData(nameof(GetFilesComplexGlobbingMatchingInfo.GetTestData), MemberType = typeof(GetFilesComplexGlobbingMatchingInfo), DisableDiscoveryEnumeration = true)] public void GetFilesComplexGlobbingMatching(GetFilesComplexGlobbingMatchingInfo info) { TransientTestFolder testFolder = _env.CreateFolder();