testDialectQueries is a helper function to test queries from a specific dialect file
(t *testing.T, filePath string, dialectName string)
| 234 | |
| 235 | // testDialectQueries is a helper function to test queries from a specific dialect file |
| 236 | func 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) |
no test coverage detected