@@ -4,36 +4,26 @@ import (
4
4
"bytes"
5
5
"fmt"
6
6
"os"
7
- "os/exec"
8
7
"strings"
9
8
"testing"
10
9
10
+ "github.com/stretchr/testify/require"
11
11
"goa.design/goa/v3/eval"
12
12
"goa.design/goa/v3/expr"
13
-
14
- "github.com/sergi/go-diff/diffmatchpatch"
15
13
)
16
14
17
15
// RunDSL returns the DSL root resulting from running the given DSL.
18
16
func RunDSL (t * testing.T , dsl func ()) * expr.RootExpr {
19
17
t .Helper ()
20
18
eval .Reset ()
21
19
expr .Root = new (expr.RootExpr )
22
- expr .Root .GeneratedTypes = & expr.GeneratedRoot {}
23
- if err := eval .Register (expr .Root ); err != nil {
24
- t .Fatal (err )
25
- }
26
- if err := eval .Register (expr .Root .GeneratedTypes ); err != nil {
27
- t .Fatal (err )
28
- }
20
+ expr .GeneratedResultTypes = new (expr.ResultTypesRoot )
21
+ require .NoError (t , eval .Register (expr .Root ))
22
+ require .NoError (t , eval .Register (expr .GeneratedResultTypes ))
29
23
expr .Root .API = expr .NewAPIExpr ("test api" , func () {})
30
24
expr .Root .API .Servers = []* expr.ServerExpr {expr .Root .API .DefaultServer ()}
31
- if ! eval .Execute (dsl , nil ) {
32
- t .Fatal (eval .Context .Error ())
33
- }
34
- if err := eval .RunDSL (); err != nil {
35
- t .Fatal (err )
36
- }
25
+ require .True (t , eval .Execute (dsl , nil ), eval .Context .Error ())
26
+ require .NoError (t , eval .RunDSL ())
37
27
return expr .Root
38
28
}
39
29
@@ -52,22 +42,16 @@ func SectionsCode(t *testing.T, sections []*SectionTemplate) string {
52
42
}
53
43
54
44
// SectionCodeFromImportsAndMethods generates and formats the code for given import and method definition sections.
55
- func SectionCodeFromImportsAndMethods (t * testing.T , importSection * SectionTemplate , methodSection * SectionTemplate ) string {
45
+ func SectionCodeFromImportsAndMethods (t * testing.T , importSection , methodSection * SectionTemplate ) string {
56
46
t .Helper ()
57
47
var code bytes.Buffer
58
- if err := importSection .Write (& code ); err != nil {
59
- t .Fatal (err )
60
- }
61
-
48
+ require .NoError (t , importSection .Write (& code ))
62
49
return sectionCodeWithPrefix (t , methodSection , code .String ())
63
50
}
64
51
65
52
func sectionCodeWithPrefix (t * testing.T , section * SectionTemplate , prefix string ) string {
66
53
var code bytes.Buffer
67
- if err := section .Write (& code ); err != nil {
68
- t .Fatal (err )
69
- }
70
-
54
+ require .NoError (t , section .Write (& code ))
71
55
codestr := code .String ()
72
56
73
57
if len (prefix ) > 0 {
@@ -83,50 +67,23 @@ func FormatTestCode(t *testing.T, code string) string {
83
67
t .Helper ()
84
68
tmp := CreateTempFile (t , code )
85
69
defer os .Remove (tmp )
86
- if err := finalizeGoSource (tmp ); err != nil {
87
- t .Fatal (err )
88
- }
70
+ require .NoError (t , finalizeGoSource (tmp ))
89
71
content , err := os .ReadFile (tmp )
90
- if err != nil {
91
- t .Fatal (err )
92
- }
72
+ require .NoError (t , err )
93
73
return strings .Join (strings .Split (string (content ), "\n " )[2 :], "\n " )
94
74
}
95
75
96
- // Diff returns a diff between s1 and s2. It uses the diff tool if installed
97
- // otherwise degrades to using the dmp package.
98
- func Diff (t * testing.T , s1 , s2 string ) string {
99
- _ , err := exec .LookPath ("diff" )
100
- supportsDiff := (err == nil )
101
- if ! supportsDiff {
102
- dmp := diffmatchpatch .New ()
103
- diffs := dmp .DiffMain (s1 , s2 , false )
104
- return dmp .DiffPrettyText (diffs )
105
- }
106
- left := CreateTempFile (t , s1 )
107
- right := CreateTempFile (t , s2 )
108
- defer os .Remove (left )
109
- defer os .Remove (right )
110
- cmd := exec .Command ("diff" , left , right )
111
- diffb , _ := cmd .CombinedOutput ()
112
- return strings .ReplaceAll (string (diffb ), "\t " , " ␉ " )
113
- }
114
-
115
76
// CreateTempFile creates a temporary file and writes the given content.
116
77
// It is used only for testing.
117
78
func CreateTempFile (t * testing.T , content string ) string {
118
79
t .Helper ()
119
80
f , err := os .CreateTemp ("" , "" )
120
- if err != nil {
121
- t .Fatal (err )
122
- }
81
+ require .NoError (t , err )
123
82
_ , err = f .WriteString (content )
124
83
if err != nil {
125
84
os .Remove (f .Name ())
126
85
t .Fatal (err )
127
86
}
128
- if err := f .Close (); err != nil {
129
- t .Fatal (err )
130
- }
87
+ require .NoError (t , f .Close ())
131
88
return f .Name ()
132
89
}
0 commit comments