From 43bb009747de670f38f0e174da9aa36fdd8fbeaa Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Thu, 26 Nov 2020 13:44:26 +1100 Subject: [PATCH] better dir trimming --- docs/build-server.md | 2 +- docs/serializer-settings.md | 18 +++++++------- src/Directory.Build.props | 2 +- ...s.ShouldScrubProjectDirectory.verified.txt | 6 +++-- ....ShouldScrubSolutionDirectory.verified.txt | 6 +++-- .../Serialization/SerializationTests.cs | 18 +++++++++----- src/Verify/Verifier/InnerVerifier.cs | 24 ++++++++++++------- 7 files changed, 47 insertions(+), 29 deletions(-) diff --git a/docs/build-server.md b/docs/build-server.md index 7b5fb05d2d..6e65f2cda3 100644 --- a/docs/build-server.md +++ b/docs/build-server.md @@ -21,7 +21,7 @@ Use a [on_failure build step](https://www.appveyor.com/docs/build-configuration/ on_failure: - ps: Get-ChildItem *.received.* -recurse | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name } ``` -snippet source | anchor +snippet source | anchor See also [Pushing artifacts from scripts](https://www.appveyor.com/docs/packaging-artifacts/#pushing-artifacts-from-scripts). diff --git a/docs/serializer-settings.md b/docs/serializer-settings.md index 897db3114c..49f56b31e8 100644 --- a/docs/serializer-settings.md +++ b/docs/serializer-settings.md @@ -360,7 +360,7 @@ public Task ScopedSerializerFluent() _ => { _.TypeNameHandling = TypeNameHandling.All; }); } ``` -snippet source | anchor +snippet source | anchor Result: @@ -423,7 +423,7 @@ public async Task IgnoreTypeFluent() } ``` -snippet source | anchor +snippet source | anchor Result: @@ -487,7 +487,7 @@ public async Task AddIgnoreInstanceFluent() _ => { _.IgnoreInstance(x => x.Property == "Ignore"); }); } ``` -snippet source | anchor +snippet source | anchor Result: @@ -529,7 +529,7 @@ public Task WithObsoleteProp() return Verifier.Verify(target); } ``` -snippet source | anchor +snippet source | anchor Result: @@ -577,7 +577,7 @@ public Task WithObsoletePropIncludedFluent() .ModifySerialization(_ => { _.IncludeObsoletes(); }); } ``` -snippet source | anchor +snippet source | anchor Result: @@ -640,7 +640,7 @@ public async Task IgnoreMemberByExpressionFluent() }); } ``` -snippet source | anchor +snippet source | anchor Result: @@ -708,7 +708,7 @@ public async Task IgnoreMemberByNameFluent() }); } ``` -snippet source | anchor +snippet source | anchor Result: @@ -754,7 +754,7 @@ public async Task CustomExceptionPropFluent() .ModifySerialization(_ => _.IgnoreMembersThatThrow()); } ``` -snippet source | anchor +snippet source | anchor Result: @@ -794,7 +794,7 @@ public async Task ExceptionMessagePropFluent() _ => _.IgnoreMembersThatThrow(x => x.Message == "Ignore")); } ``` -snippet source | anchor +snippet source | anchor Result: diff --git a/src/Directory.Build.props b/src/Directory.Build.props index d0258b2dd9..40de1b94b0 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -2,7 +2,7 @@ CS1591;CS0649;xUnit1026 - 8.7.1 + 8.7.2 1.0.0 Json, Testing, Verify, Snapshot, Approvals Enables verification of complex models and documents. diff --git a/src/Verify.Tests/Serialization/SerializationTests.ShouldScrubProjectDirectory.verified.txt b/src/Verify.Tests/Serialization/SerializationTests.ShouldScrubProjectDirectory.verified.txt index b4474d796f..cc59c2d408 100644 --- a/src/Verify.Tests/Serialization/SerializationTests.ShouldScrubProjectDirectory.verified.txt +++ b/src/Verify.Tests/Serialization/SerializationTests.ShouldScrubProjectDirectory.verified.txt @@ -1,4 +1,6 @@ { - combine: ProjectDirectory\Foo, - alt: ProjectDirectory/Foo + path: {ProjectDirectory}Foo, + trimmed: {ProjectDirectory}Foo, + altPath: {ProjectDirectory}Foo, + altPathTrimmed: {ProjectDirectory}Foo } \ No newline at end of file diff --git a/src/Verify.Tests/Serialization/SerializationTests.ShouldScrubSolutionDirectory.verified.txt b/src/Verify.Tests/Serialization/SerializationTests.ShouldScrubSolutionDirectory.verified.txt index 70ab212195..1d471e6b1a 100644 --- a/src/Verify.Tests/Serialization/SerializationTests.ShouldScrubSolutionDirectory.verified.txt +++ b/src/Verify.Tests/Serialization/SerializationTests.ShouldScrubSolutionDirectory.verified.txt @@ -1,4 +1,6 @@ { - combine: SolutionDirectory\Foo, - alt: SolutionDirectory/Foo + path: {SolutionDirectory}Foo, + trimmed: {SolutionDirectory}Foo, + altPath: {SolutionDirectory}Foo, + altPathTrimmed: {SolutionDirectory}Foo } \ No newline at end of file diff --git a/src/Verify.Tests/Serialization/SerializationTests.cs b/src/Verify.Tests/Serialization/SerializationTests.cs index af63427e03..73e34e95ec 100644 --- a/src/Verify.Tests/Serialization/SerializationTests.cs +++ b/src/Verify.Tests/Serialization/SerializationTests.cs @@ -483,12 +483,15 @@ public Task ShouldIgnoreGuidDefaults() public Task ShouldScrubProjectDirectory() { var projectDirectory = GetProjectDirectory(); - var combine = Path.GetFullPath(Path.Combine(projectDirectory, "Foo")); + var path = Path.GetFullPath(Path.Combine(projectDirectory, "Foo")); + var altPath = path.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); return Verifier.Verify( new { - combine, - alt = combine.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) + path, + trimmed = path.TrimEnd('/', '\\'), + altPath, + altPathTrimmed = altPath.TrimEnd('/', '\\'), }); } @@ -501,12 +504,15 @@ string GetProjectDirectory([CallerFilePath] string file = "") public Task ShouldScrubSolutionDirectory() { var solutionDirectory = GetSolutionDirectory(); - var combine = Path.GetFullPath(Path.Combine(solutionDirectory,"Foo")); + var path = Path.GetFullPath(Path.Combine(solutionDirectory, "Foo")); + var altPath = path.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); return Verifier.Verify( new { - combine, - alt = combine.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) + path, + trimmed = path.TrimEnd('/', '\\'), + altPath, + altPathTrimmed = altPath.TrimEnd('/', '\\'), }); } diff --git a/src/Verify/Verifier/InnerVerifier.cs b/src/Verify/Verifier/InnerVerifier.cs index b0136f9d74..7c1f45cde8 100644 --- a/src/Verify/Verifier/InnerVerifier.cs +++ b/src/Verify/Verifier/InnerVerifier.cs @@ -25,26 +25,34 @@ public static void Init(Func exceptionBuilder) public InnerVerifier(string testName, string sourceFile, Assembly assembly, VerifySettings settings) { - var projectDirectory = AttributeReader.GetProjectDirectory(assembly).TrimEnd('/', '\\'); + var projectDirectory = AttributeReader.GetProjectDirectory(assembly); directory = VerifierSettings.DeriveDirectory(sourceFile, projectDirectory); this.testName = testName; this.assembly = assembly; this.settings = settings; if (AttributeReader.TryGetSolutionDirectory(assembly, out var solutionDirectory)) { - solutionDirectory = solutionDirectory!.TrimEnd('/', '\\'); - var altSolutionDirectory = solutionDirectory.Replace(Path.DirectorySeparatorChar,Path.AltDirectorySeparatorChar); + var altSolutionDirectory = solutionDirectory!.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + var altSolutionDirectoryTrimmed = altSolutionDirectory.TrimEnd('/', '\\'); + var solutionDirectoryTrimmed = solutionDirectory.TrimEnd('/', '\\'); settings.AddScrubber(builder => { - builder.Replace(solutionDirectory, "SolutionDirectory"); - builder.Replace(altSolutionDirectory, "SolutionDirectory"); + builder.Replace(solutionDirectory, "{SolutionDirectory}"); + builder.Replace(solutionDirectoryTrimmed, "{SolutionDirectory}"); + builder.Replace(altSolutionDirectory, "{SolutionDirectory}"); + builder.Replace(altSolutionDirectoryTrimmed, "{SolutionDirectory}"); }); } - var altProjectDirectory = projectDirectory.Replace(Path.DirectorySeparatorChar,Path.AltDirectorySeparatorChar); + + var altProjectDirectory = projectDirectory.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + var altProjectDirectoryTrimmed = altProjectDirectory.TrimEnd('/', '\\'); + var projectDirectoryTrimmed = projectDirectory.TrimEnd('/', '\\'); settings.AddScrubber(builder => { - builder.Replace(projectDirectory, "ProjectDirectory"); - builder.Replace(altProjectDirectory, "ProjectDirectory"); + builder.Replace(projectDirectory, "{ProjectDirectory}"); + builder.Replace(projectDirectoryTrimmed, "{ProjectDirectory}"); + builder.Replace(altProjectDirectory, "{ProjectDirectory}"); + builder.Replace(altProjectDirectoryTrimmed, "{ProjectDirectory}"); }); CounterContext.Start();