@@ -285,17 +285,25 @@ type YamlTestCase struct {
285285 TestFile string
286286}
287287
288- func RunYamlTests (testDir string ) (passed bool , err error ) {
288+ type YamlIssues struct {
289+ YamlAnalyzer YamlAnalyzer
290+ Got []int
291+ Want []int
292+ }
293+
294+ var IssuesYaml = make (map [YamlTestCase ]* YamlIssues )
295+
296+ func RunYamlTests (testDir string ) (issues map [YamlTestCase ]* YamlIssues , err error ) {
289297 tests , err := FindYamlTestFiles (testDir )
290298 if err != nil {
291- return false , err
299+ return nil , err
292300 }
293301
294302 if len (tests ) == 0 {
295- return false , fmt .Errorf ("no test files found" )
303+ return nil , fmt .Errorf ("no test files found" )
296304 }
297305
298- passed = true
306+ // passed = true
299307 for _ , test := range tests {
300308 if test .TestFile == "" {
301309 fmt .Fprintf (os .Stderr , "No test file found for checker '%s'\n " , test .YamlCheckerPath )
@@ -304,19 +312,19 @@ func RunYamlTests(testDir string) (passed bool, err error) {
304312
305313 fmt .Fprintf (os .Stderr , "Running test case: %s\n " , filepath .Base (test .YamlCheckerPath ))
306314
307- checker , _ , err := ReadFromFile (test .YamlCheckerPath )
315+ checker , yamlChecker , err := ReadFromFile (test .YamlCheckerPath )
308316 if err != nil {
309- return false , err
317+ return nil , err
310318 }
311319
312320 want , err := findExpectedLines (test .TestFile )
313321 if err != nil {
314- return false , err
322+ return nil , err
315323 }
316324
317325 gotIssues , err := RunAnalyzers (test .TestFile , []* Analyzer {& checker }, nil )
318326 if err != nil {
319- return false , err
327+ return nil , err
320328 }
321329
322330 var got []int
@@ -326,35 +334,46 @@ func RunYamlTests(testDir string) (passed bool, err error) {
326334
327335 slices .Sort (got )
328336
329- if len (want ) != len (got ) {
330- testName := filepath .Base (test .YamlCheckerPath )
331- message := fmt .Sprintf (
332- "(%s): expected issues on the following lines: %v\n but issues were raised on lines: %v\n " ,
333- testName ,
334- want ,
335- got ,
336- )
337- fmt .Fprintf (os .Stderr , "%s" , message )
338- passed = false
339- continue
340- }
341- for j := 0 ; j < len (want ); j ++ {
342- if want [j ] != got [j ] {
343- testName := filepath .Base (test .YamlCheckerPath )
344- message := fmt .Sprintf (
345- "(%s): expected issue on line %d, but next occurrence is on line %d\n " ,
346- testName ,
347- want [j ],
348- got [j ],
349- )
350- fmt .Fprintf (os .Stderr , "%s\n " , message )
351- passed = false
337+ if IssuesYaml [test ] == nil {
338+ IssuesYaml [test ] = & YamlIssues {
339+ Want : want ,
340+ Got : got ,
341+ YamlAnalyzer : yamlChecker ,
352342 }
353-
343+ } else {
344+ IssuesYaml [test ].Want = append (IssuesYaml [test ].Want , want ... )
345+ IssuesYaml [test ].Got = append (IssuesYaml [test ].Got , got ... )
346+ IssuesYaml [test ].YamlAnalyzer = yamlChecker
354347 }
348+ // if len(want) != len(got) {
349+ // testName := filepath.Base(test.YamlCheckerPath)
350+ // message := fmt.Sprintf(
351+ // "(%s): expected issues on the following lines: %v\nbut issues were raised on lines: %v\n",
352+ // testName,
353+ // want,
354+ // got,
355+ // )
356+ // fmt.Fprintf(os.Stderr, "%s", message)
357+ // passed = false
358+ // continue
359+ // }
360+ // for j := 0; j < len(want); j++ {
361+ // if want[j] != got[j] {
362+ // testName := filepath.Base(test.YamlCheckerPath)
363+ // message := fmt.Sprintf(
364+ // "(%s): expected issue on line %d, but next occurrence is on line %d\n",
365+ // testName,
366+ // want[j],
367+ // got[j],
368+ // )
369+ // fmt.Fprintf(os.Stderr, "%s\n", message)
370+ // passed = false
371+ // }
372+
373+ // }
355374 }
356375
357- return passed , nil
376+ return IssuesYaml , nil
358377}
359378
360379func FindYamlTestFiles (testDir string ) ([]YamlTestCase , error ) {
0 commit comments