From cc699bb83cc773fc6c855f94367e794c513eece0 Mon Sep 17 00:00:00 2001 From: Arthur van de Vondervoort Date: Tue, 16 Jun 2026 09:57:11 +0200 Subject: [PATCH] fix: normalize line endings on both sides in CodeFix test comparison MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Verify.CodeAction() normalized only the actual code fix output (CRLF→LF on Linux/macOS) but not the expected code from fixture files. This caused all HasFix tests to fail on Linux/WSL when fixture files had CRLF endings. Replace platform-specific ConvertToLineEndingsAwareString with an unconditional NormalizeLineEndings that normalizes both actual and expected to LF before comparison, making tests stable across all platforms regardless of git autocrlf settings or OS line endings. Also fixes a bug where multi-document comparison reused the wrong SourceText variable (sourceText instead of docSourceText). Co-Authored-By: Claude Opus 4.6 --- src/RoslynTestKit/Verify.cs | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/src/RoslynTestKit/Verify.cs b/src/RoslynTestKit/Verify.cs index 8603615..dab68fa 100644 --- a/src/RoslynTestKit/Verify.cs +++ b/src/RoslynTestKit/Verify.cs @@ -1,10 +1,8 @@ using System; using System.Linq; -using System.Runtime.InteropServices; using System.Text; using System.Threading; using Microsoft.Dynamics.Nav.CodeAnalysis.CodeActions; -using Microsoft.Dynamics.Nav.CodeAnalysis.Text; using Microsoft.Dynamics.Nav.CodeAnalysis.Workspaces; using RoslynTestKit.Utils; @@ -35,10 +33,7 @@ public static void CodeAction(CodeAction codeAction, Document document, string e var sourceText = newDocument.GetTextAsync(CancellationToken.None).GetAwaiter().GetResult(); var mergedDocumentBuilder = new StringBuilder(); - var text = ConvertToLineEndingsAwareString(sourceText); - - mergedDocumentBuilder.Append(text); - + mergedDocumentBuilder.Append(sourceText.ToString()); foreach (var doc in newDocument.Project.Documents.OrderByDescending(x => x.Name)) { @@ -47,12 +42,12 @@ public static void CodeAction(CodeAction codeAction, Document document, string e mergedDocumentBuilder.AppendLine($"{Environment.NewLine}{BaseTestFixture.FileSeparator}"); var docSourceText = doc.GetTextAsync(CancellationToken.None).GetAwaiter().GetResult(); - var docText = ConvertToLineEndingsAwareString(sourceText); - - mergedDocumentBuilder.Append(docText); + mergedDocumentBuilder.Append(docSourceText.ToString()); } } - var actualCode = mergedDocumentBuilder.ToString(); + + var actualCode = NormalizeLineEndings(mergedDocumentBuilder.ToString()); + expectedCode = NormalizeLineEndings(expectedCode); if (actualCode != expectedCode) { @@ -62,17 +57,9 @@ public static void CodeAction(CodeAction codeAction, Document document, string e } } - private static string ConvertToLineEndingsAwareString(SourceText sourceText) + private static string NormalizeLineEndings(string text) { - string text = sourceText.ToString(); - - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux) || - RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - text = text.Replace("\r\n", "\n"); - } - - return text; + return text.Replace("\r\n", "\n"); } } } \ No newline at end of file