From 0a86fe265984d6a0306b6cbb440e96a655f08e3f Mon Sep 17 00:00:00 2001 From: Ivan Dlugos Date: Mon, 11 Jul 2022 15:48:16 +0200 Subject: [PATCH] test: ProGuard setup CRLF support --- .../Android/ProguardSetupTests.cs | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/test/Sentry.Unity.Editor.Tests/Android/ProguardSetupTests.cs b/test/Sentry.Unity.Editor.Tests/Android/ProguardSetupTests.cs index 26c3c341a..b135fb10b 100644 --- a/test/Sentry.Unity.Editor.Tests/Android/ProguardSetupTests.cs +++ b/test/Sentry.Unity.Editor.Tests/Android/ProguardSetupTests.cs @@ -72,18 +72,33 @@ public void AddsRuleFile(bool existsBefore) } [Test] - public void AddsRuleToGradleScript() + [TestCase("\n")] + [TestCase("\r\n")] + public void AddsRuleToGradleScript(string lineSeparator) { var gradleScript = Path.Combine(_outputPath, "build.gradle"); - var regex = new Regex($"consumerProguardFiles .*, '{ProguardSetup.RuleFileName}'"); + + // Update the file to have the expected separators for this test case. + var linesBefore = File.ReadAllLines(gradleScript).Length; + File.WriteAllText(gradleScript, Regex.Replace(File.ReadAllText(gradleScript), "\r?\n", lineSeparator)); + + // Sanity check that the previous replacement worked. + StringAssert.Contains(lineSeparator, File.ReadAllText(gradleScript)); + Assert.AreEqual(linesBefore, File.ReadAllLines(gradleScript).Length); var sut = GetSut(); - Assert.False(regex.Match(File.ReadAllText(gradleScript)).Success); + var regex = $"consumerProguardFiles [^\r\n]*, '{ProguardSetup.RuleFileName}'"; + StringAssert.DoesNotMatch(regex, File.ReadAllText(gradleScript)); sut.AddToGradleProject(); - Assert.True(regex.Match(File.ReadAllText(gradleScript)).Success); + var newContent = File.ReadAllText(gradleScript); + StringAssert.IsMatch(regex, newContent); + + // Doesn't add again on the second run. + sut.AddToGradleProject(); + Assert.AreEqual(File.ReadAllText(gradleScript), newContent); } [Test]