|
@@ -0,0 +1,47 @@
|
|
|
+// Licensed to the .NET Foundation under one or more agreements.
|
|
|
+// The .NET Foundation licenses this file to you under the Apache 2.0 License.
|
|
|
+// See the LICENSE file in the project root for more information.
|
|
|
+
|
|
|
+using ApprovalTests.Core;
|
|
|
+using DiffPlex;
|
|
|
+using DiffPlex.DiffBuilder;
|
|
|
+using DiffPlex.DiffBuilder.Model;
|
|
|
+using System.IO;
|
|
|
+using Xunit.Abstractions;
|
|
|
+
|
|
|
+namespace ReactiveTests.Tests
|
|
|
+{
|
|
|
+ public class DiffPlexReporter : IApprovalFailureReporter
|
|
|
+ {
|
|
|
+ public static DiffPlexReporter INSTANCE = new DiffPlexReporter();
|
|
|
+
|
|
|
+ public ITestOutputHelper Output { get; set; }
|
|
|
+
|
|
|
+ public void Report(string approved, string received)
|
|
|
+ {
|
|
|
+ var approvedText = File.Exists(approved) ? File.ReadAllText(approved) : string.Empty;
|
|
|
+ var receivedText = File.ReadAllText(received);
|
|
|
+
|
|
|
+ var diffBuilder = new InlineDiffBuilder(new Differ());
|
|
|
+ var diff = diffBuilder.BuildDiffModel(approvedText, receivedText);
|
|
|
+
|
|
|
+ foreach (var line in diff.Lines)
|
|
|
+ {
|
|
|
+ if (line.Type == ChangeType.Unchanged) continue;
|
|
|
+
|
|
|
+ var prefix = " ";
|
|
|
+ switch (line.Type)
|
|
|
+ {
|
|
|
+ case ChangeType.Inserted:
|
|
|
+ prefix = "+ ";
|
|
|
+ break;
|
|
|
+ case ChangeType.Deleted:
|
|
|
+ prefix = "- ";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ Output.WriteLine("{0}{1}", prefix, line.Text);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|