Fail a printed Fake value the Go example test cannot replay
This commit is contained in:
+11
-4
@@ -249,7 +249,10 @@ func headerAbove(headers []*ast.CommentGroup, pos token.Pos) string {
|
|||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
|
|
||||||
var printedFake = regexp.MustCompile(`f\.Fake\("([^"]+)"\)\s*// ("(?:[^"\\]|\\.)*")`)
|
var (
|
||||||
|
printedCall = regexp.MustCompile(`(?m)^.*Fake\w*\(.*//\s*".*$`)
|
||||||
|
printedFake = regexp.MustCompile(`\.Fake\("([^"]+)"\)\s*//\s*("(?:[^"\\]|\\.)*")`)
|
||||||
|
)
|
||||||
|
|
||||||
// TestGoExamplesPrintWhatTheyRender replays each Go example's printed Fake calls on seed 42.
|
// TestGoExamplesPrintWhatTheyRender replays each Go example's printed Fake calls on seed 42.
|
||||||
func TestGoExamplesPrintWhatTheyRender(t *testing.T) {
|
func TestGoExamplesPrintWhatTheyRender(t *testing.T) {
|
||||||
@@ -258,15 +261,19 @@ func TestGoExamplesPrintWhatTheyRender(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
calls := printedFake.FindAllStringSubmatch(string(src), -1)
|
lines := printedCall.FindAllString(string(src), -1)
|
||||||
if calls == nil {
|
if lines == nil {
|
||||||
t.Errorf("%s prints no seeded Fake, so nothing holds its example to a render", name)
|
t.Errorf("%s prints no seeded Fake, so nothing holds its example to a render", name)
|
||||||
}
|
}
|
||||||
f, err := New(WithSeed(42))
|
f, err := New(WithSeed(42))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
for _, c := range calls {
|
for _, line := range lines {
|
||||||
|
c := printedFake.FindStringSubmatch(line)
|
||||||
|
if c == nil {
|
||||||
|
t.Fatalf("%s prints a value this test cannot replay; spell it f.Fake(\"path\") // \"value\": %s", name, line)
|
||||||
|
}
|
||||||
want, err := strconv.Unquote(c[2])
|
want, err := strconv.Unquote(c[2])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("%s prints %s: %v", name, c[2], err)
|
t.Fatalf("%s prints %s: %v", name, c[2], err)
|
||||||
|
|||||||
Reference in New Issue
Block a user