mirror of
https://github.com/Smaug123/WoofWare.Expect
synced 2025-10-08 05:48:40 +00:00
Add ability to update snapshots (#4)
This commit is contained in:
22
WoofWare.Expect.Test/Assembly.fs
Normal file
22
WoofWare.Expect.Test/Assembly.fs
Normal file
@@ -0,0 +1,22 @@
|
||||
namespace WoofWare.Expect.Test
|
||||
|
||||
open System
|
||||
open System.IO
|
||||
open System.Reflection
|
||||
|
||||
[<RequireQualifiedAccess>]
|
||||
module Assembly =
|
||||
|
||||
let getEmbeddedResource (assembly : Assembly) (name : string) : string =
|
||||
let names = assembly.GetManifestResourceNames ()
|
||||
|
||||
let names =
|
||||
names |> Seq.filter (fun s -> s.EndsWith (name, StringComparison.Ordinal))
|
||||
|
||||
use s =
|
||||
names
|
||||
|> Seq.exactlyOne
|
||||
|> assembly.GetManifestResourceStream
|
||||
|> fun s -> new StreamReader (s)
|
||||
|
||||
s.ReadToEnd ()
|
@@ -1,6 +1,5 @@
|
||||
namespace WoofWare.Expect.Test
|
||||
namespace WoofWare.Expect.Test
|
||||
|
||||
open System
|
||||
open WoofWare.Expect
|
||||
open NUnit.Framework
|
||||
|
||||
@@ -9,7 +8,7 @@ module SimpleTest =
|
||||
[<Test>]
|
||||
let ``JSON is resilient to whitespace changes`` () =
|
||||
expect {
|
||||
snapshotJson "123 "
|
||||
snapshotJson " 123 "
|
||||
return 123
|
||||
}
|
||||
|
||||
@@ -17,7 +16,7 @@ module SimpleTest =
|
||||
let ``Example of a failing test`` () =
|
||||
expect {
|
||||
snapshot
|
||||
"snapshot mismatch! snapshot at filepath.fs:99 (Example of a failing test) was:
|
||||
@"snapshot mismatch! snapshot at filepath.fs:99 (Example of a failing test) was:
|
||||
|
||||
- 123
|
||||
|
||||
@@ -39,6 +38,6 @@ actual was:
|
||||
[<Test>]
|
||||
let ``Basic example`` () =
|
||||
expect {
|
||||
snapshot "123"
|
||||
snapshot @"123"
|
||||
return 123
|
||||
}
|
||||
|
10
WoofWare.Expect.Test/SyntaxCases/AtStringOneLine.fs
Normal file
10
WoofWare.Expect.Test/SyntaxCases/AtStringOneLine.fs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot @"test ""quotes"" here"
|
||||
return 123
|
||||
}
|
14
WoofWare.Expect.Test/SyntaxCases/SingleQuoteManyLine.fs
Normal file
14
WoofWare.Expect.Test/SyntaxCases/SingleQuoteManyLine.fs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot
|
||||
"test
|
||||
with
|
||||
newlines"
|
||||
|
||||
return 123
|
||||
}
|
@@ -0,0 +1,13 @@
|
||||
namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot (* comment *)
|
||||
"""test
|
||||
"""
|
||||
|
||||
return 123
|
||||
}
|
10
WoofWare.Expect.Test/SyntaxCases/TripleQuoteOneLine.fs
Normal file
10
WoofWare.Expect.Test/SyntaxCases/TripleQuoteOneLine.fs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot """test"""
|
||||
return 123
|
||||
}
|
213
WoofWare.Expect.Test/TestSnapshotFinding.fs
Normal file
213
WoofWare.Expect.Test/TestSnapshotFinding.fs
Normal file
@@ -0,0 +1,213 @@
|
||||
namespace WoofWare.Expect.Test
|
||||
|
||||
open WoofWare.Expect
|
||||
open NUnit.Framework
|
||||
|
||||
[<TestFixture>]
|
||||
module TestSnapshotFinding =
|
||||
|
||||
type Dummy = class end
|
||||
|
||||
[<Test>]
|
||||
let ``Triple-quote, one line, one-line replacement`` () =
|
||||
let source =
|
||||
Assembly.getEmbeddedResource typeof<Dummy>.Assembly "TripleQuoteOneLine.fs"
|
||||
|> _.Split('\n')
|
||||
|
||||
expect {
|
||||
snapshot
|
||||
@"namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot @""replacement""
|
||||
return 123
|
||||
}
|
||||
"
|
||||
|
||||
return SnapshotUpdate.updateSnapshotAtLine source 8 "replacement" |> String.concat "\n"
|
||||
}
|
||||
|
||||
[<Test>]
|
||||
let ``Triple-quote, one line, multi-line replacement`` () =
|
||||
let source =
|
||||
Assembly.getEmbeddedResource typeof<Dummy>.Assembly "TripleQuoteOneLine.fs"
|
||||
|> _.Split('\n')
|
||||
|
||||
expect {
|
||||
snapshot
|
||||
@"namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot @""replacement
|
||||
more""
|
||||
return 123
|
||||
}
|
||||
"
|
||||
|
||||
return
|
||||
SnapshotUpdate.updateSnapshotAtLine source 8 "replacement\nmore"
|
||||
|> String.concat "\n"
|
||||
}
|
||||
|
||||
[<Test>]
|
||||
let ``At-string, one line, one-line replacement`` () =
|
||||
let source =
|
||||
Assembly.getEmbeddedResource typeof<Dummy>.Assembly "AtStringOneLine.fs"
|
||||
|> _.Split('\n')
|
||||
|
||||
expect {
|
||||
snapshot
|
||||
@"namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot @""replacement""
|
||||
return 123
|
||||
}
|
||||
"
|
||||
|
||||
return SnapshotUpdate.updateSnapshotAtLine source 8 "replacement" |> String.concat "\n"
|
||||
}
|
||||
|
||||
[<Test>]
|
||||
let ``At-string, one line, multi-line replacement`` () =
|
||||
let source =
|
||||
Assembly.getEmbeddedResource typeof<Dummy>.Assembly "AtStringOneLine.fs"
|
||||
|> _.Split('\n')
|
||||
|
||||
expect {
|
||||
snapshot
|
||||
@"namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot @""replacement
|
||||
more""
|
||||
return 123
|
||||
}
|
||||
"
|
||||
|
||||
return
|
||||
SnapshotUpdate.updateSnapshotAtLine source 8 "replacement\nmore"
|
||||
|> String.concat "\n"
|
||||
}
|
||||
|
||||
[<Test>]
|
||||
let ``Triple-quote, intervening comment, one-line replacement`` () =
|
||||
let source =
|
||||
Assembly.getEmbeddedResource typeof<Dummy>.Assembly "TripleQuoteInterveningComment.fs"
|
||||
|> _.Split('\n')
|
||||
|
||||
expect {
|
||||
snapshot
|
||||
@"namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot (* comment *)
|
||||
@""replacement""
|
||||
|
||||
return 123
|
||||
}
|
||||
"
|
||||
|
||||
return SnapshotUpdate.updateSnapshotAtLine source 8 "replacement" |> String.concat "\n"
|
||||
}
|
||||
|
||||
[<Test>]
|
||||
let ``Triple-quote, intervening comment, multi-line replacement`` () =
|
||||
let source =
|
||||
Assembly.getEmbeddedResource typeof<Dummy>.Assembly "TripleQuoteInterveningComment.fs"
|
||||
|> _.Split('\n')
|
||||
|
||||
expect {
|
||||
snapshot
|
||||
@"namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot (* comment *)
|
||||
@""replacement
|
||||
more""
|
||||
|
||||
return 123
|
||||
}
|
||||
"
|
||||
|
||||
return
|
||||
SnapshotUpdate.updateSnapshotAtLine source 8 "replacement\nmore"
|
||||
|> String.concat "\n"
|
||||
}
|
||||
|
||||
[<Test>]
|
||||
let ``Single-quote, many lines, one-line replacement`` () =
|
||||
let source =
|
||||
Assembly.getEmbeddedResource typeof<Dummy>.Assembly "SingleQuoteManyLine.fs"
|
||||
|> _.Split('\n')
|
||||
|
||||
expect {
|
||||
snapshot
|
||||
@"namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot
|
||||
@""replacement""
|
||||
|
||||
return 123
|
||||
}
|
||||
"
|
||||
|
||||
return SnapshotUpdate.updateSnapshotAtLine source 8 "replacement" |> String.concat "\n"
|
||||
}
|
||||
|
||||
[<Test>]
|
||||
let ``Single-quote, many lines, multi-line replacement`` () =
|
||||
let source =
|
||||
Assembly.getEmbeddedResource typeof<Dummy>.Assembly "SingleQuoteManyLine.fs"
|
||||
|> _.Split('\n')
|
||||
|
||||
expect {
|
||||
snapshot
|
||||
@"namespace BigExample
|
||||
|
||||
open WoofWare.Expect
|
||||
|
||||
module MyModule =
|
||||
let foo () =
|
||||
expect {
|
||||
snapshot
|
||||
@""replacement
|
||||
more""
|
||||
|
||||
return 123
|
||||
}
|
||||
"
|
||||
|
||||
return
|
||||
SnapshotUpdate.updateSnapshotAtLine source 8 "replacement\nmore"
|
||||
|> String.concat "\n"
|
||||
}
|
@@ -7,12 +7,19 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="SimpleTest.fs" />
|
||||
<Compile Include="TestSurface.fs" />
|
||||
<Compile Include="Assembly.fs" />
|
||||
<Compile Include="SimpleTest.fs" />
|
||||
<Compile Include="TestSnapshotFinding.fs" />
|
||||
<Compile Include="TestSurface.fs" />
|
||||
<EmbeddedResource Include="SyntaxCases\AtStringOneLine.fs" />
|
||||
<EmbeddedResource Include="SyntaxCases\SingleQuoteManyLine.fs" />
|
||||
<EmbeddedResource Include="SyntaxCases\TripleQuoteInterveningComment.fs" />
|
||||
<EmbeddedResource Include="SyntaxCases\TripleQuoteOneLine.fs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="ApiSurface" Version="4.1.20" />
|
||||
<PackageReference Include="FsUnit" Version="7.0.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1"/>
|
||||
<PackageReference Include="NUnit" Version="4.3.2"/>
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0"/>
|
||||
|
Reference in New Issue
Block a user