in compliance/version.go [65:113]
func checkFeaturesVersions(t *testing.T, fs fs.FS, paths []string) {
suite := godog.TestSuite{
Options: &godog.Options{
Paths: paths,
FS: fs,
TestingT: t,
Strict: false,
},
}
features, err := suite.RetrieveFeatures()
require.NoError(t, err)
versionsInChangelog, err := spec.VersionsInChangelog()
require.NoError(t, err)
var versions []string
for _, v := range versionsInChangelog {
v, _ := v.SetPrerelease("")
versions = append(versions, v.String())
}
validTags := func(tags []*cucumbermessages.Tag, requireTags bool) error {
if requireTags && len(tags) == 0 {
return fmt.Errorf("no version tags")
}
for _, tag := range tags {
if tag.Name == "@skip" {
return nil
}
if !slices.Contains(versions, strings.TrimLeft(tag.Name, "@")) {
return fmt.Errorf("tag indicates an unknown spec version %s", tag.Name)
}
}
return nil
}
for _, feature := range features {
if err := validTags(feature.Feature.Tags, false); err != nil {
t.Fatalf("Feature %q has an invalid tag: %s", feature.Feature.Name, err)
}
for _, child := range feature.Feature.Children {
if err := validTags(child.Scenario.Tags, true); err != nil {
t.Fatalf("Scenario %q in feature %q has an invalid tag: %s", child.Scenario.Name, feature.Feature.Name, err)
}
}
}
}