From 8c2e8009bf199981a5561dcf64f984e3c95da3e8 Mon Sep 17 00:00:00 2001 From: Jeff Kluge Date: Mon, 13 Aug 2018 12:54:43 -0700 Subject: [PATCH] Make IsTraversal property determination case-insensitive. `String.Contains()` is case sensitive and has no overload so switch to `String.IndexOf(String, StringComparison)` instead. Also added unit tests Fixes #46 --- src/Traversal.UnitTests/TraversalTests.cs | 34 +++++++++++++++++++++++ src/Traversal/Sdk/Sdk.props | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/Traversal.UnitTests/TraversalTests.cs b/src/Traversal.UnitTests/TraversalTests.cs index d6d85d20..6c2ae3d3 100644 --- a/src/Traversal.UnitTests/TraversalTests.cs +++ b/src/Traversal.UnitTests/TraversalTests.cs @@ -16,6 +16,40 @@ namespace Microsoft.Build.Traversal.UnitTests { public class TraversalTests : MSBuildSdkTestBase { + [Theory] + [InlineData("dirs.proj")] + [InlineData("Dirs.proj")] + [InlineData("Dirs.Proj")] + [InlineData("DiRs.PrOj")] + public void IsTraversalPropertyCaseInsensitive(string projectName) + { + ProjectCreator + .Templates + .TraversalProject( + new string[0], + path: GetTempFile(projectName)) + .Save() + .TryGetPropertyValue("IsTraversal", out string isTraversal); + + isTraversal.ShouldBe("true", StringCompareShould.IgnoreCase); + } + + [Theory] + [InlineData("dirs.proj", "true")] + [InlineData("asdf.proj", "")] + public void IsTraversalPropertySetCorrectly(string projectName, string expectedValue) + { + ProjectCreator + .Templates + .TraversalProject( + new string[0], + path: GetTempFile(projectName)) + .Save() + .TryGetPropertyValue("IsTraversal", out string isTraversal); + + isTraversal.ShouldBe(expectedValue, StringCompareShould.IgnoreCase); + } + [Fact] public void SkipsNonExistentTargets() { diff --git a/src/Traversal/Sdk/Sdk.props b/src/Traversal/Sdk/Sdk.props index 1ecc9a72..6e84b157 100644 --- a/src/Traversal/Sdk/Sdk.props +++ b/src/Traversal/Sdk/Sdk.props @@ -19,7 +19,7 @@ dirs.proj $([System.Convert]::ToBoolean($(IsTraversal))) - true + true