Skip to content

Commit

Permalink
fix trailing slash in dir scrubbing
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonCropp committed Nov 6, 2021
1 parent ae40150 commit 18ba5cb
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 33 deletions.
4 changes: 2 additions & 2 deletions docs/named-tuples.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ static (bool Member1, string Member2, string Member3) MethodWithNamedTuple()
return (true, "A", "B");
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L963-L970' title='Snippet source file'>snippet source</a> | <a href='#snippet-methodwithnamedtuple' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L975-L982' title='Snippet source file'>snippet source</a> | <a href='#snippet-methodwithnamedtuple' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Can be verified:
Expand All @@ -31,7 +31,7 @@ Can be verified:
```cs
await Verifier.VerifyTuple(() => MethodWithNamedTuple());
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L956-L960' title='Snippet source file'>snippet source</a> | <a href='#snippet-verifytuple' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L968-L972' title='Snippet source file'>snippet source</a> | <a href='#snippet-verifytuple' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Resulting in:
Expand Down
38 changes: 19 additions & 19 deletions docs/serializer-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ var target = new GuidTarget

await Verifier.Verify(target);
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1030-L1043' title='Snippet source file'>snippet source</a> | <a href='#snippet-guid' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1042-L1055' title='Snippet source file'>snippet source</a> | <a href='#snippet-guid' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Results in the following:
Expand Down Expand Up @@ -642,7 +642,7 @@ public Task ScopedSerializerFluent()
_ => { _.TypeNameHandling = TypeNameHandling.All; });
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1962-L1991' title='Snippet source file'>snippet source</a> | <a href='#snippet-scopedserializer' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1974-L2003' title='Snippet source file'>snippet source</a> | <a href='#snippet-scopedserializer' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -705,7 +705,7 @@ public Task IgnoreTypeFluent()

}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1348-L1388' title='Snippet source file'>snippet source</a> | <a href='#snippet-addignoretype' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1360-L1400' title='Snippet source file'>snippet source</a> | <a href='#snippet-addignoretype' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Or globally:
Expand All @@ -716,7 +716,7 @@ Or globally:
VerifierSettings.ModifySerialization(
_ => _.IgnoreMembersWithType<ToIgnore>());
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1340-L1345' title='Snippet source file'>snippet source</a> | <a href='#snippet-addignoretypeglobal' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1352-L1357' title='Snippet source file'>snippet source</a> | <a href='#snippet-addignoretypeglobal' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -780,7 +780,7 @@ public Task AddIgnoreInstanceFluent()
_ => { _.IgnoreInstance<Instance>(x => x.Property == "Ignore"); });
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1284-L1325' title='Snippet source file'>snippet source</a> | <a href='#snippet-addignoreinstance' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1296-L1337' title='Snippet source file'>snippet source</a> | <a href='#snippet-addignoreinstance' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Or globally:
Expand All @@ -791,7 +791,7 @@ Or globally:
VerifierSettings.ModifySerialization(
_ => { _.IgnoreInstance<Instance>(x => x.Property == "Ignore"); });
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1276-L1281' title='Snippet source file'>snippet source</a> | <a href='#snippet-addignoreinstanceglobal' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1288-L1293' title='Snippet source file'>snippet source</a> | <a href='#snippet-addignoreinstanceglobal' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -835,7 +835,7 @@ public Task WithObsoleteProp()
return Verifier.Verify(target);
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1923-L1944' title='Snippet source file'>snippet source</a> | <a href='#snippet-withobsoleteprop' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1935-L1956' title='Snippet source file'>snippet source</a> | <a href='#snippet-withobsoleteprop' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -883,7 +883,7 @@ public Task WithObsoletePropIncludedFluent()
.ModifySerialization(_ => { _.IncludeObsoletes(); });
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1894-L1921' title='Snippet source file'>snippet source</a> | <a href='#snippet-withobsoletepropincluded' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1906-L1933' title='Snippet source file'>snippet source</a> | <a href='#snippet-withobsoletepropincluded' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Or globally:
Expand All @@ -893,7 +893,7 @@ Or globally:
```cs
VerifierSettings.ModifySerialization(_ => { _.IncludeObsoletes(); });
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1887-L1891' title='Snippet source file'>snippet source</a> | <a href='#snippet-withobsoletepropincludedglobally' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1899-L1903' title='Snippet source file'>snippet source</a> | <a href='#snippet-withobsoletepropincludedglobally' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -958,7 +958,7 @@ public Task IgnoreMemberByExpressionFluent()
});
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1491-L1534' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignorememberbyexpression' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1503-L1546' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignorememberbyexpression' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Or globally
Expand All @@ -975,7 +975,7 @@ VerifierSettings.ModifySerialization(_ =>
_.IgnoreMember<IgnoreExplicitTarget>(x => x.PropertyThatThrows);
});
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1477-L1488' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignorememberbyexpressionglobal' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1489-L1500' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignorememberbyexpressionglobal' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -1043,7 +1043,7 @@ public Task IgnoreMemberByNameFluent()
});
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1618-L1665' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignorememberbyname' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1630-L1677' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignorememberbyname' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Or globally:
Expand All @@ -1061,7 +1061,7 @@ VerifierSettings.ModifySerialization(_ =>
_.IgnoreMember(type, "PropertyThatThrows");
});
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1603-L1615' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignorememberbynameglobal' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1615-L1627' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignorememberbynameglobal' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -1107,7 +1107,7 @@ public Task CustomExceptionPropFluent()
.ModifySerialization(_ => _.IgnoreMembersThatThrow<CustomException>());
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1784-L1803' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignoremembersthatthrow' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1796-L1815' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignoremembersthatthrow' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Or globally:
Expand All @@ -1117,7 +1117,7 @@ Or globally:
```cs
VerifierSettings.ModifySerialization(_ => _.IgnoreMembersThatThrow<CustomException>());
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1777-L1781' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignoremembersthatthrowglobal' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1789-L1793' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignoremembersthatthrowglobal' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -1156,7 +1156,7 @@ public Task ExceptionMessagePropFluent()
_ => _.IgnoreMembersThatThrow<Exception>(x => x.Message == "Ignore"));
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1221-L1244' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignoremembersthatthrowexpression' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1233-L1256' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignoremembersthatthrowexpression' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Or globally:
Expand All @@ -1167,7 +1167,7 @@ Or globally:
VerifierSettings.ModifySerialization(
_ => _.IgnoreMembersThatThrow<Exception>(x => x.Message == "Ignore"));
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1213-L1218' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignoremembersthatthrowexpressionglobal' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1225-L1230' title='Snippet source file'>snippet source</a> | <a href='#snippet-ignoremembersthatthrowexpressionglobal' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Result:
Expand Down Expand Up @@ -1320,7 +1320,7 @@ public Task MemberConverterByExpressionFluent()
});
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1537-L1576' title='Snippet source file'>snippet source</a> | <a href='#snippet-memberconverter' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1549-L1588' title='Snippet source file'>snippet source</a> | <a href='#snippet-memberconverter' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

This can also be configured globally:
Expand All @@ -1338,7 +1338,7 @@ VerifierSettings.ModifySerialization(_ =>
(target, value) => value + "Suffix");
});
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1580-L1592' title='Snippet source file'>snippet source</a> | <a href='#snippet-memberconverterglobal' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1592-L1604' title='Snippet source file'>snippet source</a> | <a href='#snippet-memberconverterglobal' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->


Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ public Task VerifyJsonJToken()
return Verifier.VerifyJson(target);
}
```
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1715-L1740' title='Snippet source file'>snippet source</a> | <a href='#snippet-verifyjson' title='Start of snippet'>anchor</a></sup>
<sup><a href='/src/Verify.Tests/Serialization/SerializationTests.cs#L1727-L1752' title='Snippet source file'>snippet source</a> | <a href='#snippet-verifyjson' title='Start of snippet'>anchor</a></sup>
<!-- endSnippet -->

Results in:
Expand Down
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Project>
<PropertyGroup>
<NoWarn>CS1591;CS0649;xUnit1026;xUnit1013</NoWarn>
<Version>14.1.1</Version>
<Version>14.2.0</Version>
<AssemblyVersion>1.0.0</AssemblyVersion>
<PackageTags>Json, Testing, Verify, Snapshot, Approvals</PackageTags>
<Description>Enables verification of complex models and documents.</Description>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{
currentDirectory: {CurrentDirectory},
altCurrentDirectory: {CurrentDirectory}
altCurrentDirectory: {CurrentDirectory},
currentDirectoryTrailing: {CurrentDirectory},
altCurrentDirectoryTrailing: {CurrentDirectory}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{
tempPath: {TempPath},
altTempPath: {TempPath}
altTempPath: {TempPath},
tempPathTrailing: {TempPath},
altTempPathTrailing: {TempPath}
}
16 changes: 14 additions & 2 deletions src/Verify.Tests/Serialization/SerializationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -885,15 +885,27 @@ public Task ScrubTempPath()
{
var tempPath = Path.GetTempPath().TrimEnd('/', '\\');
var altTempPath = tempPath.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
return Verifier.Verify(new {tempPath, altTempPath});
return Verifier.Verify(new
{
tempPath,
altTempPath,
tempPathTrailing = tempPath + Path.DirectorySeparatorChar,
altTempPathTrailing = altTempPath + Path.AltDirectorySeparatorChar
});
}

[Fact]
public Task ScrubCurrentDirectory()
{
var currentDirectory = Environment.CurrentDirectory.TrimEnd('/', '\\');
var altCurrentDirectory = currentDirectory.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
return Verifier.Verify(new {currentDirectory, altCurrentDirectory});
return Verifier.Verify(new
{
currentDirectory,
altCurrentDirectory,
currentDirectoryTrailing = currentDirectory + Path.DirectorySeparatorChar,
altCurrentDirectoryTrailing = altCurrentDirectory + Path.AltDirectorySeparatorChar
});
}

#if !NET5_0_OR_GREATER
Expand Down
24 changes: 18 additions & 6 deletions src/Verify/Serialization/Scrubbers/ApplyScrubbers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,41 @@
static class ApplyScrubbers
{
static HashSet<string> currentDirectoryReplacements = new();
static string tempPath;
static string altTempPath;
static HashSet<string> tempDirectoryReplacements = new();
static Action<StringBuilder> sharedReplacements = null!;

static ApplyScrubbers()
{
var baseDirectory = CleanPath(AppDomain.CurrentDomain.BaseDirectory);
var altBaseDirectory = baseDirectory.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
currentDirectoryReplacements.Add(baseDirectory + Path.DirectorySeparatorChar);
currentDirectoryReplacements.Add(altBaseDirectory + Path.AltDirectorySeparatorChar);
currentDirectoryReplacements.Add(baseDirectory);
currentDirectoryReplacements.Add(altBaseDirectory);

var currentDirectory = CleanPath(Environment.CurrentDirectory);
var altCurrentDirectory = currentDirectory.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
currentDirectoryReplacements.Add(currentDirectory + Path.DirectorySeparatorChar);
currentDirectoryReplacements.Add(altCurrentDirectory + Path.AltDirectorySeparatorChar);
currentDirectoryReplacements.Add(currentDirectory);
currentDirectoryReplacements.Add(altCurrentDirectory);
#if !NET5_0_OR_GREATER
if (CodeBaseLocation.CurrentDirectory is not null)
{
var codeBaseLocation = CleanPath(CodeBaseLocation.CurrentDirectory);
var altCodeBaseLocation = codeBaseLocation.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
currentDirectoryReplacements.Add(codeBaseLocation + Path.DirectorySeparatorChar);
currentDirectoryReplacements.Add(altCodeBaseLocation + Path.AltDirectorySeparatorChar);
currentDirectoryReplacements.Add(codeBaseLocation);
currentDirectoryReplacements.Add(altCodeBaseLocation);
}
#endif
tempPath = CleanPath(Path.GetTempPath());
altTempPath = tempPath.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
var tempPath = CleanPath(Path.GetTempPath());
var altTempPath = tempPath.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
tempDirectoryReplacements.Add(altTempPath + Path.AltDirectorySeparatorChar);
tempDirectoryReplacements.Add(tempPath + Path.DirectorySeparatorChar);
tempDirectoryReplacements.Add(tempPath);
tempDirectoryReplacements.Add(altTempPath);
}

public static void UseAssembly(string? solutionDirectory, string projectDirectory)
Expand Down Expand Up @@ -83,8 +93,10 @@ public static void Apply(string extension, StringBuilder target, VerifySettings
target.Replace(replace, "{CurrentDirectory}");
}

target.Replace(tempPath, "{TempPath}");
target.Replace(altTempPath, "{TempPath}");
foreach (var replace in tempDirectoryReplacements)
{
target.Replace(replace, "{TempPath}");
}

foreach (var scrubber in settings.InstanceScrubbers)
{
Expand Down

0 comments on commit 18ba5cb

Please sign in to comment.