Skip to content

Commit 834d832

Browse files
authored
refactor: avoid panic in tests (#3098)
1 parent 7184585 commit 834d832

File tree

8 files changed

+50
-113
lines changed

8 files changed

+50
-113
lines changed

‎client/client_test.go‎

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,15 @@ import (
2121
func TestClient(t *testing.T) {
2222
h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
2323
b, err := io.ReadAll(r.Body)
24-
if err != nil {
25-
panic(err)
26-
}
24+
require.NoError(t, err)
2725
require.Equal(t, `{"query":"user(id:$id){name}","variables":{"id":1}}`, string(b))
2826

2927
err = json.NewEncoder(w).Encode(map[string]any{
3028
"data": map[string]any{
3129
"name": "bob",
3230
},
3331
})
34-
if err != nil {
35-
panic(err)
36-
}
32+
require.NoError(t, err)
3733
})
3834

3935
c := client.New(h)
@@ -151,18 +147,14 @@ func TestAddCookie(t *testing.T) {
151147
func TestAddExtensions(t *testing.T) {
152148
h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
153149
b, err := io.ReadAll(r.Body)
154-
if err != nil {
155-
panic(err)
156-
}
150+
require.NoError(t, err)
157151
require.Equal(t, `{"query":"user(id:1){name}","extensions":{"persistedQuery":{"sha256Hash":"ceec2897e2da519612279e63f24658c3e91194cbb2974744fa9007a7e1e9f9e7","version":1}}}`, string(b))
158152
err = json.NewEncoder(w).Encode(map[string]any{
159153
"data": map[string]any{
160154
"Name": "Bob",
161155
},
162156
})
163-
if err != nil {
164-
panic(err)
165-
}
157+
require.NoError(t, err)
166158
})
167159

168160
c := client.New(h)

‎codegen/config/binder_test.go‎

Lines changed: 20 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@ func TestSlicePointerBinding(t *testing.T) {
2424
})
2525

2626
ta, err := binder.TypeReference(schema.Query.Fields.ForName("messages").Type, nil)
27-
if err != nil {
28-
panic(err)
29-
}
27+
require.NoError(t, err)
3028

3129
require.Equal(t, "[]*github.com/99designs/gqlgen/codegen/config/testdata/autobinding/chat.Message", ta.GO.String())
3230
})
@@ -37,9 +35,7 @@ func TestSlicePointerBinding(t *testing.T) {
3735
})
3836

3937
ta, err := binder.TypeReference(schema.Query.Fields.ForName("messages").Type, nil)
40-
if err != nil {
41-
panic(err)
42-
}
38+
require.NoError(t, err)
4339

4440
require.Equal(t, "[]github.com/99designs/gqlgen/codegen/config/testdata/autobinding/chat.Message", ta.GO.String())
4541
})
@@ -50,19 +46,13 @@ func TestOmittableBinding(t *testing.T) {
5046
binder, schema := createBinder(Config{})
5147

5248
ot, err := binder.FindType("github.com/99designs/gqlgen/graphql", "Omittable")
53-
if err != nil {
54-
panic(err)
55-
}
49+
require.NoError(t, err)
5650

5751
it, err := binder.InstantiateType(ot, []types.Type{types.Universe.Lookup("string").Type()})
58-
if err != nil {
59-
panic(err)
60-
}
52+
require.NoError(t, err)
6153

6254
ta, err := binder.TypeReference(schema.Types["FooInput"].Fields.ForName("nullableString").Type, it)
63-
if err != nil {
64-
panic(err)
65-
}
55+
require.NoError(t, err)
6656

6757
require.True(t, ta.IsOmittable)
6858
})
@@ -71,19 +61,13 @@ func TestOmittableBinding(t *testing.T) {
7161
binder, schema := createBinder(Config{})
7262

7363
ot, err := binder.FindType("github.com/99designs/gqlgen/graphql", "Omittable")
74-
if err != nil {
75-
panic(err)
76-
}
64+
require.NoError(t, err)
7765

7866
it, err := binder.InstantiateType(ot, []types.Type{types.NewPointer(types.Universe.Lookup("string").Type())})
79-
if err != nil {
80-
panic(err)
81-
}
67+
require.NoError(t, err)
8268

8369
ta, err := binder.TypeReference(schema.Types["FooInput"].Fields.ForName("nullableString").Type, it)
84-
if err != nil {
85-
panic(err)
86-
}
70+
require.NoError(t, err)
8771

8872
require.True(t, ta.IsOmittable)
8973
})
@@ -92,14 +76,10 @@ func TestOmittableBinding(t *testing.T) {
9276
binder, schema := createBinder(Config{})
9377

9478
ot, err := binder.FindType("github.com/99designs/gqlgen/graphql", "Omittable")
95-
if err != nil {
96-
panic(err)
97-
}
79+
require.NoError(t, err)
9880

9981
it, err := binder.InstantiateType(ot, []types.Type{types.Universe.Lookup("string").Type()})
100-
if err != nil {
101-
panic(err)
102-
}
82+
require.NoError(t, err)
10383

10484
_, err = binder.TypeReference(schema.Types["FooInput"].Fields.ForName("nonNullableString").Type, it)
10585
require.Error(t, err)
@@ -109,14 +89,10 @@ func TestOmittableBinding(t *testing.T) {
10989
binder, schema := createBinder(Config{})
11090

11191
ot, err := binder.FindType("github.com/99designs/gqlgen/graphql", "Omittable")
112-
if err != nil {
113-
panic(err)
114-
}
92+
require.NoError(t, err)
11593

11694
it, err := binder.InstantiateType(ot, []types.Type{types.NewPointer(types.Universe.Lookup("string").Type())})
117-
if err != nil {
118-
panic(err)
119-
}
95+
require.NoError(t, err)
12096

12197
_, err = binder.TypeReference(schema.Types["FooInput"].Fields.ForName("nonNullableString").Type, it)
12298
require.Error(t, err)
@@ -126,24 +102,16 @@ func TestOmittableBinding(t *testing.T) {
126102
binder, schema := createBinder(Config{})
127103

128104
typ, err := binder.FindType("github.com/99designs/gqlgen/codegen/config/testdata/autobinding/chat", "Message")
129-
if err != nil {
130-
panic(err)
131-
}
105+
require.NoError(t, err)
132106

133107
ot, err := binder.FindType("github.com/99designs/gqlgen/graphql", "Omittable")
134-
if err != nil {
135-
panic(err)
136-
}
108+
require.NoError(t, err)
137109

138110
it, err := binder.InstantiateType(ot, []types.Type{typ})
139-
if err != nil {
140-
panic(err)
141-
}
111+
require.NoError(t, err)
142112

143113
ta, err := binder.TypeReference(schema.Types["FooInput"].Fields.ForName("nullableObject").Type, it)
144-
if err != nil {
145-
panic(err)
146-
}
114+
require.NoError(t, err)
147115

148116
require.True(t, ta.IsOmittable)
149117
})
@@ -152,24 +120,16 @@ func TestOmittableBinding(t *testing.T) {
152120
binder, schema := createBinder(Config{})
153121

154122
typ, err := binder.FindType("github.com/99designs/gqlgen/codegen/config/testdata/autobinding/chat", "Message")
155-
if err != nil {
156-
panic(err)
157-
}
123+
require.NoError(t, err)
158124

159125
ot, err := binder.FindType("github.com/99designs/gqlgen/graphql", "Omittable")
160-
if err != nil {
161-
panic(err)
162-
}
126+
require.NoError(t, err)
163127

164128
it, err := binder.InstantiateType(ot, []types.Type{types.NewPointer(typ)})
165-
if err != nil {
166-
panic(err)
167-
}
129+
require.NoError(t, err)
168130

169131
ta, err := binder.TypeReference(schema.Types["FooInput"].Fields.ForName("nullableObject").Type, it)
170-
if err != nil {
171-
panic(err)
172-
}
132+
require.NoError(t, err)
173133

174134
require.True(t, ta.IsOmittable)
175135
})

‎codegen/testserver/followschema/interfaces_test.go‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ func TestInterfaces(t *testing.T) {
8181
t.Run("interfaces can be typed nil", func(t *testing.T) {
8282
resolvers := &Stub{}
8383
resolvers.QueryResolver.NoShapeTypedNil = func(ctx context.Context) (shapes Shape, e error) {
84-
panic("should not be called")
84+
t.Fatal("should not be called")
85+
return
8586
}
8687

8788
srv := handler.NewDefaultServer(
@@ -105,7 +106,8 @@ func TestInterfaces(t *testing.T) {
105106
t.Run("interfaces can be nil (test with code-generated resolver)", func(t *testing.T) {
106107
resolvers := &Stub{}
107108
resolvers.QueryResolver.Animal = func(ctx context.Context) (animal Animal, e error) {
108-
panic("should not be called")
109+
t.Fatal("should not be called")
110+
return
109111
}
110112

111113
srv := handler.NewDefaultServer(

‎codegen/testserver/generated_test.go‎

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ import (
1616

1717
func TestLayouts(t *testing.T) {
1818
singlefileFSet := token.NewFileSet()
19-
singlefilePkg := loadPackage("singlefile", singlefileFSet)
19+
singlefilePkg := loadPackage(t, "singlefile", singlefileFSet)
2020

2121
followschemaFSet := token.NewFileSet()
22-
followschemaPkg := loadPackage("followschema", followschemaFSet)
22+
followschemaPkg := loadPackage(t, "followschema", followschemaFSet)
2323

2424
eq, msg := eqgo.PackagesEquivalent(singlefilePkg, singlefileFSet, followschemaPkg, followschemaFSet, nil)
2525
if !eq {
@@ -30,15 +30,13 @@ func TestLayouts(t *testing.T) {
3030
}
3131
}
3232

33-
func loadPackage(name string, fset *token.FileSet) *ast.Package {
33+
func loadPackage(t *testing.T, name string, fset *token.FileSet) *ast.Package {
34+
t.Helper()
35+
3436
path, err := filepath.Abs(name)
35-
if err != nil {
36-
panic(err)
37-
}
37+
require.NoError(t, err)
3838
files, err := os.ReadDir(path)
39-
if err != nil {
40-
panic(err)
41-
}
39+
require.NoError(t, err)
4240

4341
pkg := ast.Package{
4442
Name: name,
@@ -53,9 +51,7 @@ func loadPackage(name string, fset *token.FileSet) *ast.Package {
5351
f.Name() == "models-gen.go" {
5452
filename := filepath.Join(path, f.Name())
5553
src, err := parser.ParseFile(fset, filename, nil, parser.AllErrors)
56-
if err != nil {
57-
panic(err)
58-
}
54+
require.NoError(t, err)
5955
pkg.Files[filename] = src
6056
}
6157
}

‎codegen/testserver/singlefile/interfaces_test.go‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ func TestInterfaces(t *testing.T) {
8181
t.Run("interfaces can be typed nil", func(t *testing.T) {
8282
resolvers := &Stub{}
8383
resolvers.QueryResolver.NoShapeTypedNil = func(ctx context.Context) (shapes Shape, e error) {
84-
panic("should not be called")
84+
t.Fatal("should not be called")
85+
return
8586
}
8687

8788
srv := handler.NewDefaultServer(
@@ -105,7 +106,8 @@ func TestInterfaces(t *testing.T) {
105106
t.Run("interfaces can be nil (test with code-generated resolver)", func(t *testing.T) {
106107
resolvers := &Stub{}
107108
resolvers.QueryResolver.Animal = func(ctx context.Context) (animal Animal, e error) {
108-
panic("should not be called")
109+
t.Fatal("should not be called")
110+
return
109111
}
110112

111113
srv := handler.NewDefaultServer(

‎graphql/playground/playground_test.go‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package playground
22

33
import (
4-
"fmt"
54
"io"
65
"net/http"
76
"net/http/httptest"
@@ -23,7 +22,7 @@ func TestHandler_createsAbsoluteURLs(t *testing.T) {
2322

2423
b, err := io.ReadAll(res.Body)
2524
if err != nil {
26-
panic(fmt.Errorf("reading res.Body: %w", err))
25+
t.Fatalf("reading res.Body: %v", err)
2726
}
2827

2928
want := regexp.MustCompile(`(?m)^.*url\s*=\s*['"]https:\/\/example\.org\/query["'].*$`)
@@ -59,7 +58,7 @@ func TestHandler_createsRelativeURLs(t *testing.T) {
5958

6059
b, err := io.ReadAll(res.Body)
6160
if err != nil {
62-
panic(fmt.Errorf("reading res.Body: %w", err))
61+
t.Fatalf("reading res.Body: %v", err)
6362
}
6463

6564
wantURL := regexp.MustCompile(`(?m)^.*url\s*=\s*location\.protocol.*$`)

‎plugin/federation/federation_test.go‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,7 @@ func TestCodeGeneration(t *testing.T) {
143143
require.NoError(t, f.MutateConfig(cfg))
144144

145145
data, err := codegen.BuildData(cfg)
146-
if err != nil {
147-
panic(err)
148-
}
146+
require.NoError(t, err)
149147
require.NoError(t, f.GenerateCode(data))
150148
}
151149

@@ -162,9 +160,7 @@ func TestCodeGenerationFederation2(t *testing.T) {
162160
require.Empty(t, f.Entities[2].Resolvers)
163161

164162
data, err := codegen.BuildData(cfg)
165-
if err != nil {
166-
panic(err)
167-
}
163+
require.NoError(t, err)
168164
require.NoError(t, f.GenerateCode(data))
169165
}
170166

‎plugin/resolvergen/resolver_test.go‎

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ func TestLayoutSingleFile(t *testing.T) {
2323
require.NoError(t, cfg.Init())
2424

2525
data, err := codegen.BuildData(cfg)
26-
if err != nil {
27-
panic(err)
28-
}
26+
require.NoError(t, err)
2927

3028
require.NoError(t, p.GenerateCode(data))
3129
assertNoErrors(t, "github.com/99designs/gqlgen/plugin/resolvergen/testdata/singlefile/out")
@@ -76,9 +74,7 @@ func TestOmitTemplateComment(t *testing.T) {
7674
require.NoError(t, cfg.Init())
7775

7876
data, err := codegen.BuildData(cfg)
79-
if err != nil {
80-
panic(err)
81-
}
77+
require.NoError(t, err)
8278

8379
require.NoError(t, p.GenerateCode(data))
8480
assertNoErrors(t, "github.com/99designs/gqlgen/plugin/resolvergen/testdata/omit_template_comment/out")
@@ -94,9 +90,7 @@ func TestResolver_Implementation(t *testing.T) {
9490
require.NoError(t, cfg.Init())
9591

9692
data, err := codegen.BuildData(cfg, &implementorTest{})
97-
if err != nil {
98-
panic(err)
99-
}
93+
require.NoError(t, err)
10094

10195
require.NoError(t, p.GenerateCode(data))
10296
assertNoErrors(t, "github.com/99designs/gqlgen/plugin/resolvergen/testdata/resolver_implementor/out")
@@ -111,9 +105,7 @@ func TestCustomResolverTemplate(t *testing.T) {
111105
require.NoError(t, cfg.Init())
112106

113107
data, err := codegen.BuildData(cfg)
114-
if err != nil {
115-
panic(err)
116-
}
108+
require.NoError(t, err)
117109

118110
require.NoError(t, p.GenerateCode(data))
119111
}
@@ -128,9 +120,7 @@ func testFollowSchemaPersistence(t *testing.T, dir string) {
128120
require.NoError(t, cfg.Init())
129121

130122
data, err := codegen.BuildData(cfg)
131-
if err != nil {
132-
panic(err)
133-
}
123+
require.NoError(t, err)
134124

135125
require.NoError(t, p.GenerateCode(data))
136126
assertNoErrors(t, "github.com/99designs/gqlgen/plugin/resolvergen/"+dir+"/out")
@@ -146,7 +136,7 @@ func assertNoErrors(t *testing.T, pkg string) {
146136
packages.NeedTypesSizes,
147137
}, pkg)
148138
if err != nil {
149-
panic(err)
139+
t.Fatal(err)
150140
}
151141

152142
hasErrors := false

0 commit comments

Comments
 (0)