MCPcopy Create free account
hub / github.com/dolthub/doltgresql / RewriteTests

Function RewriteTests

testing/generation/command_docs/output/framework_test.go:145–241  ·  view source on GitHub ↗

RewriteTests rewrites the given test file with the given tests to have the new results. This is a utility to avoid having to tediously update tests after implementing some parser / engine functionality.

(t *testing.T, tests []QueryParses, file string)

Source from the content-addressed store, hash-verified

143// RewriteTests rewrites the given test file with the given tests to have the new results. This is a utility to avoid
144// having to tediously update tests after implementing some parser / engine functionality.
145func RewriteTests(t *testing.T, tests []QueryParses, file string) {
146 newPath := file + ".new"
147 f, err := os.Open(file)
148 require.NoError(t, err)
149 fNew, err := os.Create(newPath)
150 require.NoError(t, err)
151
152 abs, err := filepath.Abs(newPath)
153 require.NoError(t, err)
154 fmt.Println("Rewriting tests to", abs)
155
156 bufferedReader := bufio.NewReader(f)
157 bufferedWriter := bufio.NewWriter(fNew)
158
159 // copy the source file until we find the first test statement
160 var line []byte
161 for {
162 line, _, err = bufferedReader.ReadLine()
163 if err == io.EOF {
164 break
165 } else {
166 require.NoError(t, err)
167 }
168
169 if testStatementRegex.Match(line) {
170 break
171 }
172
173 _, err = bufferedWriter.Write(line)
174 require.NoError(t, err)
175 _, err = bufferedWriter.Write([]byte("\n"))
176 require.NoError(t, err)
177 }
178
179 for _, test := range tests {
180 t.Run(test.String(), func(t *testing.T) {
181 statements, err := parser.Parse(test.String())
182 if !test.ShouldParse() {
183 if err == nil && len(statements) > 0 {
184 line = testStatementRegex.ReplaceAll(line, []byte("${1}Parses("))
185 }
186 }
187
188 for _, statement := range statements {
189 vitessAST, err := func() (vitessAST sqlparser.Statement, err error) {
190 defer func() {
191 if recoverVal := recover(); recoverVal != nil {
192 vitessAST = nil
193 }
194 }()
195 return ast.Convert(statement)
196 }()
197
198 if err != nil {
199 line = testStatementRegex.ReplaceAll(line, []byte("${1}Parses("))
200 }
201
202 if !test.ShouldConvert() {

Callers 1

TestAlterServerFunction · 0.85

Calls 10

ParseFunction · 0.92
ConvertFunction · 0.92
RunMethod · 0.80
FlushMethod · 0.80
MatchMethod · 0.65
StringMethod · 0.65
ShouldParseMethod · 0.65
ShouldConvertMethod · 0.65
CloseMethod · 0.65
WriteMethod · 0.45

Tested by

no test coverage detected