Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor CookieCrumble to abstract test frameworks #6537

Merged
Prev Previous commit
Next Next commit
Merge branch 'main' into feat/refactor-into-test-frameworks
  • Loading branch information
glen-84 committed Nov 29, 2024
commit a9d2f64da003956737e74a152675b9b1a1459618
128 changes: 71 additions & 57 deletions src/CookieCrumble/CookieCrumble.sln
Original file line number Diff line number Diff line change
@@ -1,57 +1,71 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30114.105
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{2465C122-714C-4D0A-A24D-D9C22A25D73A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble", "src\CookieCrumble\CookieCrumble.csproj", "{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{EB8F1D90-60D6-48FA-9744-D4180A0E4AC0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.Tests", "test\CookieCrumble.Tests\CookieCrumble.Tests.csproj", "{844E7501-7ED6-4548-8E99-D8E50D4F39A4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.MSTest", "src\CookieCrumble.MSTest\CookieCrumble.MSTest.csproj", "{A7F12BB5-F71C-484D-BABA-2980FE873B59}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.Xunit", "src\CookieCrumble.Xunit\CookieCrumble.Xunit.csproj", "{CEE25A68-69B5-4CFD-9C35-E82736B1E205}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.MSTests", "test\CookieCrumble.MSTests\CookieCrumble.MSTests.csproj", "{F83B1337-9535-4121-8B78-89EC970CA705}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}.Release|Any CPU.Build.0 = Release|Any CPU
{844E7501-7ED6-4548-8E99-D8E50D4F39A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{844E7501-7ED6-4548-8E99-D8E50D4F39A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{844E7501-7ED6-4548-8E99-D8E50D4F39A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{844E7501-7ED6-4548-8E99-D8E50D4F39A4}.Release|Any CPU.Build.0 = Release|Any CPU
{A7F12BB5-F71C-484D-BABA-2980FE873B59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A7F12BB5-F71C-484D-BABA-2980FE873B59}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A7F12BB5-F71C-484D-BABA-2980FE873B59}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A7F12BB5-F71C-484D-BABA-2980FE873B59}.Release|Any CPU.Build.0 = Release|Any CPU
{CEE25A68-69B5-4CFD-9C35-E82736B1E205}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CEE25A68-69B5-4CFD-9C35-E82736B1E205}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CEE25A68-69B5-4CFD-9C35-E82736B1E205}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEE25A68-69B5-4CFD-9C35-E82736B1E205}.Release|Any CPU.Build.0 = Release|Any CPU
{F83B1337-9535-4121-8B78-89EC970CA705}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F83B1337-9535-4121-8B78-89EC970CA705}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F83B1337-9535-4121-8B78-89EC970CA705}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F83B1337-9535-4121-8B78-89EC970CA705}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0} = {2465C122-714C-4D0A-A24D-D9C22A25D73A}
{844E7501-7ED6-4548-8E99-D8E50D4F39A4} = {EB8F1D90-60D6-48FA-9744-D4180A0E4AC0}
{A7F12BB5-F71C-484D-BABA-2980FE873B59} = {2465C122-714C-4D0A-A24D-D9C22A25D73A}
{CEE25A68-69B5-4CFD-9C35-E82736B1E205} = {2465C122-714C-4D0A-A24D-D9C22A25D73A}
{F83B1337-9535-4121-8B78-89EC970CA705} = {EB8F1D90-60D6-48FA-9744-D4180A0E4AC0}
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30114.105
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{2465C122-714C-4D0A-A24D-D9C22A25D73A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble", "src\CookieCrumble\CookieCrumble.csproj", "{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.Fusion", "src\CookieCrumble.Fusion\CookieCrumble.Fusion.csproj", "{E6862862-986B-4A67-8703-49C70051DBDC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.HotChocolate", "src\CookieCrumble.HotChocolate\CookieCrumble.HotChocolate.csproj", "{9B57E4BC-E62A-4B7B-94FB-462C5F92D35B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.MSTest", "src\CookieCrumble.MSTest\CookieCrumble.MSTest.csproj", "{A7F12BB5-F71C-484D-BABA-2980FE873B59}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.Xunit", "src\CookieCrumble.Xunit\CookieCrumble.Xunit.csproj", "{CEE25A68-69B5-4CFD-9C35-E82736B1E205}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{EB8F1D90-60D6-48FA-9744-D4180A0E4AC0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.MSTests", "test\CookieCrumble.MSTests\CookieCrumble.MSTests.csproj", "{F83B1337-9535-4121-8B78-89EC970CA705}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CookieCrumble.Tests", "test\CookieCrumble.Tests\CookieCrumble.Tests.csproj", "{844E7501-7ED6-4548-8E99-D8E50D4F39A4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0}.Release|Any CPU.Build.0 = Release|Any CPU
{E6862862-986B-4A67-8703-49C70051DBDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E6862862-986B-4A67-8703-49C70051DBDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E6862862-986B-4A67-8703-49C70051DBDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E6862862-986B-4A67-8703-49C70051DBDC}.Release|Any CPU.Build.0 = Release|Any CPU
{9B57E4BC-E62A-4B7B-94FB-462C5F92D35B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9B57E4BC-E62A-4B7B-94FB-462C5F92D35B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9B57E4BC-E62A-4B7B-94FB-462C5F92D35B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9B57E4BC-E62A-4B7B-94FB-462C5F92D35B}.Release|Any CPU.Build.0 = Release|Any CPU
{A7F12BB5-F71C-484D-BABA-2980FE873B59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A7F12BB5-F71C-484D-BABA-2980FE873B59}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A7F12BB5-F71C-484D-BABA-2980FE873B59}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A7F12BB5-F71C-484D-BABA-2980FE873B59}.Release|Any CPU.Build.0 = Release|Any CPU
{CEE25A68-69B5-4CFD-9C35-E82736B1E205}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CEE25A68-69B5-4CFD-9C35-E82736B1E205}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CEE25A68-69B5-4CFD-9C35-E82736B1E205}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEE25A68-69B5-4CFD-9C35-E82736B1E205}.Release|Any CPU.Build.0 = Release|Any CPU
{F83B1337-9535-4121-8B78-89EC970CA705}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F83B1337-9535-4121-8B78-89EC970CA705}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F83B1337-9535-4121-8B78-89EC970CA705}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F83B1337-9535-4121-8B78-89EC970CA705}.Release|Any CPU.Build.0 = Release|Any CPU
{844E7501-7ED6-4548-8E99-D8E50D4F39A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{844E7501-7ED6-4548-8E99-D8E50D4F39A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{844E7501-7ED6-4548-8E99-D8E50D4F39A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{844E7501-7ED6-4548-8E99-D8E50D4F39A4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{8E71FA9B-8352-4675-A9B4-A934E40AF9E0} = {2465C122-714C-4D0A-A24D-D9C22A25D73A}
{E6862862-986B-4A67-8703-49C70051DBDC} = {2465C122-714C-4D0A-A24D-D9C22A25D73A}
{9B57E4BC-E62A-4B7B-94FB-462C5F92D35B} = {2465C122-714C-4D0A-A24D-D9C22A25D73A}
{A7F12BB5-F71C-484D-BABA-2980FE873B59} = {2465C122-714C-4D0A-A24D-D9C22A25D73A}
{CEE25A68-69B5-4CFD-9C35-E82736B1E205} = {2465C122-714C-4D0A-A24D-D9C22A25D73A}
{F83B1337-9535-4121-8B78-89EC970CA705} = {EB8F1D90-60D6-48FA-9744-D4180A0E4AC0}
{844E7501-7ED6-4548-8E99-D8E50D4F39A4} = {EB8F1D90-60D6-48FA-9744-D4180A0E4AC0}
EndGlobalSection
EndGlobal
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>$(Library2TargetFrameworks)</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MSTest.TestFramework" Version="3.0.4" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="../CookieCrumble/CookieCrumble.csproj" />
</ItemGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">

<ItemGroup>
<PackageReference Include="MSTest.TestFramework" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="../CookieCrumble/CookieCrumble.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
using System.Reflection;
using Xunit.Sdk;

namespace CookieCrumble.Attributes;
namespace CookieCrumble.Xunit.Attributes;

/// <summary>
/// Apply this attribute to your test method to replace the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>$(Library2TargetFrameworks)</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Xunit" Version="2.4.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="../CookieCrumble/CookieCrumble.csproj" />
</ItemGroup>

</Project>
<Project Sdk="Microsoft.NET.Sdk">

<ItemGroup>
<PackageReference Include="Xunit" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="../CookieCrumble/CookieCrumble.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using Xunit.Abstractions;
using Xunit.Sdk;

namespace CookieCrumble;
namespace CookieCrumble.Xunit;

[XunitTestCaseDiscoverer("LocalFactDiscoverer", "YourTestAssemblyName")]
public class LocalFactAttribute : FactAttribute;
Expand Down
16 changes: 3 additions & 13 deletions src/CookieCrumble/src/CookieCrumble/CookieCrumble.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,9 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="DiffPlex" Version="1.7.1" />
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\HotChocolate\Core\src\Core\HotChocolate.Core.csproj" />
<ProjectReference Include="..\..\..\HotChocolate\AspNetCore\src\AspNetCore\HotChocolate.AspNetCore.csproj" />
<ProjectReference Include="..\..\..\HotChocolate\AspNetCore\src\Transport.Abstractions\HotChocolate.Transport.Abstractions.csproj" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net7.0' OR '$(TargetFramework)' == 'net8.0'">
<ProjectReference Include="..\..\..\HotChocolate\Fusion\src\Core\HotChocolate.Fusion.csproj" />
<PackageReference Include="DiffPlex" />
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" />
<PackageReference Include="Newtonsoft.Json" />
</ItemGroup>

</Project>
35 changes: 20 additions & 15 deletions src/CookieCrumble/src/CookieCrumble/Snapshot.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
using System.Text;
using CookieCrumble.Formatters;
using DiffPlex.DiffBuilder;
using DiffPlex.DiffBuilder.Model;
using static System.Collections.Immutable.ImmutableStack;
using static System.IO.Path;
using ChangeType = DiffPlex.DiffBuilder.Model.ChangeType;
Expand All @@ -27,8 +26,10 @@ public class Snapshot
new JsonElementSnapshotValueFormatter()
});
private static readonly JsonSnapshotValueFormatter _defaultFormatter = new();
private static ITestFramework _testFramework;
private readonly List<SnapshotSegment> _segments = new();

private static ITestFramework _testFramework = null!;
private readonly List<ISnapshotSegment> _segments = [];
private readonly string _title;
private string _extension;
private string? _postFix;
private string? _fileName;
Expand All @@ -40,7 +41,9 @@ public Snapshot(string? postFix = null, string? extension = null)
throw new Exception("Please initialise a test framework before using Snapshot");
}

_fileName = GetFilename();
var frames = new StackTrace(true).GetFrames();
_title = CreateMarkdownTitle(frames);
_fileName = GetFilename(frames);
_postFix = postFix;
_extension = extension ?? ".snap";
}
Expand Down Expand Up @@ -324,7 +327,7 @@ public async ValueTask MatchMarkdownAsync(CancellationToken cancellationToken =
EnsureDirectoryExists(mismatchFile);
await using var stream = File.Create(mismatchFile);
await stream.WriteAsync(writer.WrittenMemory, cancellationToken);
throw new Xunit.Sdk.XunitException(diff);
_testFramework.ThrowTestException(diff);
}
}

Expand Down Expand Up @@ -361,7 +364,7 @@ public void MatchMarkdown()
EnsureDirectoryExists(mismatchFile);
using var stream = File.Create(mismatchFile);
stream.Write(writer.WrittenSpan);
throw new Xunit.Sdk.XunitException(diff);
_testFramework.ThrowTestException(diff);
}
}

Expand Down Expand Up @@ -616,7 +619,7 @@ private string CreateSnapshotFileName()
: string.Concat(fileName, "_", _postFix, _extension);
}

private static string GetFilename()
private string CreateMarkdownSnapshotFileName()
{
var extension = _extension.Equals(".snap", StringComparison.Ordinal) ? ".md" : _extension;

Expand All @@ -627,7 +630,7 @@ private static string GetFilename()
: string.Concat(fileName, "_", _postFix, extension);
}

private static string CreateFileName(StackFrame[] frames)
private static string GetFilename(StackFrame[] frames)
{
foreach (var stackFrame in frames)
{
Expand Down Expand Up @@ -670,24 +673,25 @@ private static string CreateMarkdownTitle(StackFrame[] frames)

if (method is not null &&
!string.IsNullOrEmpty(fileName) &&
IsXunitTestMethod(method))
_testFramework.IsValidTestMethod(method))
{
return method.Name;
}

var asyncMethod = EvaluateAsynchronousMethodBase(method);
method = EvaluateAsynchronousMethodBase(method);

if (asyncMethod is not null &&
if (method is not null &&
!string.IsNullOrEmpty(fileName) &&
IsXunitTestMethod(asyncMethod))
_testFramework.IsValidTestMethod(method))
{
return asyncMethod.Name;
return method.Name;
}
}

throw new Exception(
"The snapshot full name could not be evaluated. " +
"This error can occur, if you use the snapshot match " +
"Only XUnit or MSTest test suites are supported. " +
"This error can also occur, if you use the snapshot match " +
"within a async test helper child method. To solve this issue, " +
"use the Snapshot.FullName directly in the unit test to " +
"get the snapshot name, then reach this name to your " +
Expand Down Expand Up @@ -717,7 +721,8 @@ from methodInfo in classDeclaringType.GetMethods()
return actualMethodInfo;
}

private struct SnapshotSegment
private readonly struct SnapshotSegment(string? name, object? value, ISnapshotValueFormatter formatter)
: ISnapshotSegment
{
public string? Name { get; } = name;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>$(Library2TargetFrameworks)</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>

<AssemblyName>CookieCrumble.MSTests</AssemblyName>
<RootNamespace>CookieCrumble</RootNamespace>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.0.4" />
<PackageReference Include="MSTest.TestFramework" Version="3.0.4" />
<PackageReference Include="coverlet.collector" Version="3.1.2">
<PackageReference Include="coverlet.collector">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="MSTest.TestAdapter" />
<PackageReference Include="MSTest.TestFramework" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\HotChocolate\Language\src\Language.Utf8\HotChocolate.Language.Utf8.csproj" />
<ProjectReference Include="..\..\src\CookieCrumble.MSTest\CookieCrumble.MSTest.csproj" />
<ProjectReference Include="..\..\src\CookieCrumble\CookieCrumble.csproj" />
</ItemGroup>
Expand Down
9 changes: 0 additions & 9 deletions src/CookieCrumble/test/CookieCrumble.MSTests/SnapshotTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,6 @@ public void SnapshotBuilder_Segment_Custom_Global_Serializer()
snapshot.Match();
}

[TestMethod]
public void SnapshotBuilder_GraphQL_Segment()
{
var snapshot = new Snapshot();
snapshot.Add(new MyClass { Foo = "def" });
snapshot.Add(Utf8GraphQLParser.Parse("{ abc }"));
snapshot.Match();
}

public class MyClass
{
public string Foo { get; set; } = "Bar";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"Foo": "Bar"
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"Foo": "Bar"
}
}
Loading
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.