TestIntegration_AllDialects tests all SQL files across all dialects
(t *testing.T)
| 116 | |
| 117 | // TestIntegration_AllDialects tests all SQL files across all dialects |
| 118 | func TestIntegration_AllDialects(t *testing.T) { |
| 119 | // Get the project root (go up from pkg/sql to project root) |
| 120 | projectRoot, err := filepath.Abs(filepath.Join("..", "..")) |
| 121 | if err != nil { |
| 122 | t.Fatalf("Failed to determine project root: %v", err) |
| 123 | } |
| 124 | |
| 125 | files := loadSQLTestFiles(t, projectRoot) |
| 126 | |
| 127 | if len(files) == 0 { |
| 128 | t.Skip("No SQL test files found - testdata directory may not exist") |
| 129 | } |
| 130 | |
| 131 | t.Logf("Found %d SQL test files to process", len(files)) |
| 132 | |
| 133 | var results []TestResult |
| 134 | successCount := 0 |
| 135 | failCount := 0 |
| 136 | |
| 137 | // Group tests by dialect for better organization |
| 138 | dialectGroups := make(map[string][]SQLTestFile) |
| 139 | for _, file := range files { |
| 140 | dialectGroups[file.Dialect] = append(dialectGroups[file.Dialect], file) |
| 141 | } |
| 142 | |
| 143 | // Run tests for each dialect |
| 144 | for dialect, dialectFiles := range dialectGroups { |
| 145 | t.Run(dialect, func(t *testing.T) { |
| 146 | dialectSuccess := 0 |
| 147 | dialectFail := 0 |
| 148 | |
| 149 | for _, file := range dialectFiles { |
| 150 | t.Run(file.Name, func(t *testing.T) { |
| 151 | result := testSQLFile(t, file) |
| 152 | results = append(results, result) |
| 153 | |
| 154 | if result.Success { |
| 155 | dialectSuccess++ |
| 156 | successCount++ |
| 157 | } else { |
| 158 | dialectFail++ |
| 159 | failCount++ |
| 160 | t.Logf("Failed to parse %s: %v", file.Name, result.Error) |
| 161 | } |
| 162 | }) |
| 163 | } |
| 164 | |
| 165 | t.Logf("Dialect %s: %d passed, %d failed (%.1f%% success rate)", |
| 166 | dialect, dialectSuccess, dialectFail, |
| 167 | 100.0*float64(dialectSuccess)/float64(dialectSuccess+dialectFail)) |
| 168 | }) |
| 169 | } |
| 170 | |
| 171 | // Summary statistics |
| 172 | t.Logf("\n=== Integration Test Summary ===") |
| 173 | t.Logf("Total files tested: %d", len(files)) |
| 174 | t.Logf("Successful parses: %d", successCount) |
| 175 | t.Logf("Failed parses: %d", failCount) |
nothing calls this directly
no test coverage detected