MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / testDialectQueries

Function testDialectQueries

pkg/sql/parser/integration_test.go:236–296  ·  view source on GitHub ↗

testDialectQueries is a helper function to test queries from a specific dialect file

(t *testing.T, filePath string, dialectName string)

Source from the content-addressed store, hash-verified

234
235// testDialectQueries is a helper function to test queries from a specific dialect file
236func testDialectQueries(t *testing.T, filePath string, dialectName string) {
237 // Read SQL file
238 content, err := os.ReadFile(filePath)
239 if err != nil {
240 t.Skipf("File not found: %s (may not be implemented yet)", filePath)
241 return
242 }
243
244 queries := extractQueries(string(content))
245 if len(queries) == 0 {
246 t.Skipf("No queries found in %s", filePath)
247 return
248 }
249
250 successCount := 0
251 failureCount := 0
252
253 for i, query := range queries {
254 queryNum := i + 1
255 t.Run(strings.TrimSpace(query)[:min(50, len(strings.TrimSpace(query)))], func(t *testing.T) {
256 // Tokenize
257 tkz := tokenizer.GetTokenizer()
258 defer tokenizer.PutTokenizer(tkz)
259
260 tokens, tokErr := tkz.Tokenize([]byte(query))
261 if tokErr != nil {
262 failureCount++
263 t.Logf("Query #%d tokenization failed: %v", queryNum, tokErr)
264 t.Logf("Query: %s", truncateQuery(query))
265 return
266 }
267
268 // Convert tokens
269
270 // Parse
271 p := NewParser()
272 _, parseErr := p.ParseFromModelTokens(tokens)
273
274 if parseErr != nil {
275 failureCount++
276 t.Logf("Query #%d parsing failed: %v", queryNum, parseErr)
277 t.Logf("Query: %s", truncateQuery(query))
278 } else {
279 successCount++
280 t.Logf("Query #%d: ✅ Success", queryNum)
281 }
282 })
283 }
284
285 // Report dialect-specific results
286 total := successCount + failureCount
287 successRate := 0.0
288 if total > 0 {
289 successRate = (float64(successCount) / float64(total)) * 100.0
290 }
291
292 t.Logf("\n%s Dialect Results:", dialectName)
293 t.Logf(" Total: %d queries", total)

Calls 9

ParseFromModelTokensMethod · 0.95
GetTokenizerFunction · 0.92
PutTokenizerFunction · 0.92
truncateQueryFunction · 0.85
RunMethod · 0.80
TokenizeMethod · 0.80
extractQueriesFunction · 0.70
minFunction · 0.70
NewParserFunction · 0.70

Tested by

no test coverage detected