diff --git a/go.sum b/go.sum index f7797f8e..d6281e7d 100644 --- a/go.sum +++ b/go.sum @@ -99,8 +99,6 @@ github.com/kaptinlin/go-i18n v0.1.4 h1:wCiwAn1LOcvymvWIVAM4m5dUAMiHunTdEubLDk4hT github.com/kaptinlin/go-i18n v0.1.4/go.mod h1:g1fn1GvTgT4CiLE8/fFE1hboHWJ6erivrDpiDtCcFKg= github.com/kaptinlin/jsonschema v0.4.6 h1:vOSFg5tjmfkOdKg+D6Oo4fVOM/pActWu/ntkPsI1T64= github.com/kaptinlin/jsonschema v0.4.6/go.mod h1:1DUd7r5SdyB2ZnMtyB7uLv64dE3zTFTiYytDCd+AEL0= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/compress v1.18.7 h1:aUyZsS4kH3QTKurYhAOwAHxllVPnOthb3vPfnF1Ehjw= github.com/klauspost/compress v1.18.7/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= diff --git a/test/files.go b/test/files.go index bf1c6eff..4b90dfe6 100644 --- a/test/files.go +++ b/test/files.go @@ -5,6 +5,7 @@ package test import ( "errors" + "fmt" "os" "path" @@ -37,9 +38,7 @@ func GetTestsFromFiles(globPattern string) ([]*FTWTest, error) { } ftwTest, err := GetTestFromYaml(yamlString, fileName) if err != nil { - log.Warn().Msgf("Problem detected in file %s:\n%v\n", - filePath, err) - continue + return tests, fmt.Errorf("problem detected in file %s: %w", filePath, err) } tests = append(tests, ftwTest) diff --git a/test/files_test.go b/test/files_test.go index 83033b41..13acff81 100644 --- a/test/files_test.go +++ b/test/files_test.go @@ -92,3 +92,17 @@ func (s *filesTestSuite) TestGetFromBadYAML() { s.Error(err, "reading yaml should fail") } + +// A single unparseable file must fail the whole run, even when other files in +// the glob parse fine. Skipping it silently hides the loss of test coverage. +func (s *filesTestSuite) TestGetFromBadYAMLAmongGoodFiles() { + _, err := utils.CreateTempFileWithContent(s.tempDir, yamlTest, "good-*.yaml") + s.Require().NoError(err) + bad, err := utils.CreateTempFileWithContent(s.tempDir, wrongYamlTest, "bad-*.yaml") + s.Require().NoError(err) + + _, err = GetTestsFromFiles(s.tempDir + "/*.yaml") + + s.Require().Error(err, "an unparseable file must not be skipped") + s.Contains(err.Error(), bad, "error should name the offending file") +}