From 1102e80b62e8ae688a542825c13d8318d794f4be Mon Sep 17 00:00:00 2001 From: Farhad Alizada Date: Thu, 15 Feb 2024 10:38:32 +0100 Subject: [PATCH 1/2] Change the priority order of lazyloading --- src/Build.UnitTests/Evaluation/ItemEvaluation_Tests.cs | 10 ++++++---- src/Build/Utilities/EngineFileUtilities.cs | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Build.UnitTests/Evaluation/ItemEvaluation_Tests.cs b/src/Build.UnitTests/Evaluation/ItemEvaluation_Tests.cs index 67b41b392cf..7f2cee834f7 100644 --- a/src/Build.UnitTests/Evaluation/ItemEvaluation_Tests.cs +++ b/src/Build.UnitTests/Evaluation/ItemEvaluation_Tests.cs @@ -562,8 +562,9 @@ public void LazyWildcardExpansionDoesNotEvaluateWildCardsIfNotReferenced() - - + + + @@ -584,11 +585,11 @@ public void LazyWildcardExpansionDoesNotEvaluateWildCardsIfNotReferenced() ".Cleanup(); using (var env = TestEnvironment.Create()) { - var projectFiles = env.CreateTestProjectWithFiles(content, new[] { "foo/extra.props", "foo/a.cs", "foo/b.cs", "bar/c.cs", "bar/d.cs" }); + var projectFiles = env.CreateTestProjectWithFiles(content, new[] { "foo/extra.props", "foo/a.cs", "foo/b.cs", "bar/c.cs", "bar/d.cs", "yyy/d.cs" }); File.WriteAllText(projectFiles.CreatedFiles[0], import); - env.SetEnvironmentVariable("MsBuildSkipEagerWildCardEvaluationRegexes", ".*foo.*"); + env.SetEnvironmentVariable("MsBuildSkipEagerWildCardEvaluationRegexes", ".*foo.*;.*yyy*."); EngineFileUtilities.CaptureLazyWildcardRegexes(); @@ -596,6 +597,7 @@ public void LazyWildcardExpansionDoesNotEvaluateWildCardsIfNotReferenced() Assert.Equal("true", project.GetPropertyValue("FromImport")); Assert.Equal("**/foo/**/*.cs", project.GetConcatenatedItemsOfType("i")); + Assert.Equal("**/yyy/**/*.cs", project.GetConcatenatedItemsOfType("i3")); var expectedItems = "bar\\c.cs;bar\\d.cs"; diff --git a/src/Build/Utilities/EngineFileUtilities.cs b/src/Build/Utilities/EngineFileUtilities.cs index 5942dad9bad..a3f48cc1c2b 100644 --- a/src/Build/Utilities/EngineFileUtilities.cs +++ b/src/Build/Utilities/EngineFileUtilities.cs @@ -191,10 +191,12 @@ private static string[] GetFileList( FileMatcher.SearchAction action = FileMatcher.SearchAction.None; string excludeFileSpec = string.Empty; - var noWildcards = !FilespecHasWildcards(filespecEscaped) || FilespecMatchesLazyWildcard(filespecEscaped, forceEvaluateWildCards); - + var filespecHasNoWildCards = !FilespecHasWildcards(filespecEscaped); + var filespecMatchesLazyWildcard = FilespecMatchesLazyWildcard(filespecEscaped, forceEvaluateWildCards); + var excludeSpecsAreEmpty = excludeSpecsEscaped?.Any() != true; + // It is possible to return original string if no wildcard matches and no entries in Exclude set. - if (noWildcards && excludeSpecsEscaped?.Any() != true) + if ( filespecMatchesLazyWildcard || (filespecHasNoWildCards && excludeSpecsAreEmpty) ) { // Just return the original string. fileList = new string[] { returnEscaped ? filespecEscaped : EscapingUtilities.UnescapeAll(filespecEscaped) }; From 25db269fc9f4b8b4f55dfba2a0759b499fbc3fa9 Mon Sep 17 00:00:00 2001 From: Farhad Alizada Date: Thu, 15 Feb 2024 11:19:22 +0100 Subject: [PATCH 2/2] Update comment --- src/Build/Utilities/EngineFileUtilities.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Build/Utilities/EngineFileUtilities.cs b/src/Build/Utilities/EngineFileUtilities.cs index a3f48cc1c2b..e2d3c40a131 100644 --- a/src/Build/Utilities/EngineFileUtilities.cs +++ b/src/Build/Utilities/EngineFileUtilities.cs @@ -195,7 +195,9 @@ private static string[] GetFileList( var filespecMatchesLazyWildcard = FilespecMatchesLazyWildcard(filespecEscaped, forceEvaluateWildCards); var excludeSpecsAreEmpty = excludeSpecsEscaped?.Any() != true; - // It is possible to return original string if no wildcard matches and no entries in Exclude set. + // Return original value if: + // FileSpec matches lazyloading regex or + // file has no wildcard and excludeSpecs are empty if ( filespecMatchesLazyWildcard || (filespecHasNoWildCards && excludeSpecsAreEmpty) ) { // Just return the original string.