Skip to content

Commit 416ca70

Browse files
authored
Merge pull request #157 from jurretanjamx/tests-show-up-in-gitlab
Update Testcase to expose Classname to be visible in Gitlab
2 parents d86cbaa + 357b1ec commit 416ca70

3 files changed

Lines changed: 74 additions & 6 deletions

File tree

‎lint/lint.go‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,12 @@ func evalTestsuite(rule Rule, modelSourcePath string, ignoreNoqa bool, useCache
346346
testcases = append(testcases, *testcase)
347347
}
348348

349+
// Set classname on all testcases for GitLab Suite column display
350+
suiteName := fmt.Sprintf("%s - %s", rule.RuleNumber, rule.Title)
351+
for i := range testcases {
352+
testcases[i].Classname = suiteName
353+
}
354+
349355
testsuite := &Testsuite{
350356
Name: rule.Path,
351357
Tests: len(testcases),

‎lint/lint_test.go‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,67 @@ function rule(input) {
713713
}
714714
}
715715

716+
func TestEvalTestsuite_Classname(t *testing.T) {
717+
tempDir := t.TempDir()
718+
719+
jsContent := `
720+
const metadata = {
721+
title: "Test Classname Field",
722+
custom: { rulenumber: "099_0007", input: ".*\\.yaml" }
723+
};
724+
725+
function rule(input) {
726+
return { allow: true, errors: [] };
727+
}
728+
`
729+
jsPath := filepath.Join(tempDir, "classname_test.js")
730+
err := os.WriteFile(jsPath, []byte(jsContent), 0644)
731+
if err != nil {
732+
t.Fatalf("Failed to write js file: %v", err)
733+
}
734+
735+
// Create multiple test files
736+
err = os.WriteFile(filepath.Join(tempDir, "input1.yaml"), []byte(`Name: "Test1"`), 0644)
737+
if err != nil {
738+
t.Fatalf("Failed to write yaml file: %v", err)
739+
}
740+
err = os.WriteFile(filepath.Join(tempDir, "input2.yaml"), []byte(`Name: "Test2"`), 0644)
741+
if err != nil {
742+
t.Fatalf("Failed to write yaml file: %v", err)
743+
}
744+
745+
rule := Rule{
746+
Path: jsPath,
747+
Title: "Test Classname Field",
748+
RuleNumber: "099_0007",
749+
Pattern: ".*\\.yaml",
750+
PackageName: jsPath,
751+
Language: LanguageJavascript,
752+
}
753+
754+
result, err := evalTestsuite(rule, tempDir, false, false, nil, nil)
755+
if err != nil {
756+
t.Fatalf("Failed to evaluate testsuite: %v", err)
757+
}
758+
759+
expectedClassname := "099_0007 - Test Classname Field"
760+
761+
// Verify all testcases have the classname field set correctly
762+
if len(result.Testcases) == 0 {
763+
t.Fatal("Expected at least one testcase")
764+
}
765+
766+
for i, tc := range result.Testcases {
767+
if tc.Classname == "" {
768+
t.Errorf("Testcase %d (%s) has empty Classname field", i, tc.Name)
769+
}
770+
if tc.Classname != expectedClassname {
771+
t.Errorf("Testcase %d (%s) has incorrect Classname: got %q, want %q",
772+
i, tc.Name, tc.Classname, expectedClassname)
773+
}
774+
}
775+
}
776+
716777
func TestParseRuleMetadata_JavascriptValidation(t *testing.T) {
717778
tempDir := t.TempDir()
718779

‎lint/types.go‎

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ type Testsuite struct {
1919
}
2020

2121
type Testcase struct {
22-
XMLName xml.Name `xml:"testcase" json:"-"`
23-
Name string `xml:"name,attr" json:"name"`
24-
OriginalPath string `xml:"originalPath,attr,omitempty" json:"originalPath,omitempty"`
25-
Time float64 `xml:"time,attr" json:"time"`
26-
Failure *Failure `xml:"failure,omitempty" json:"failure,omitempty"`
27-
Skipped *Skipped `xml:"skipped,omitempty" json:"skipped,omitempty"`
22+
XMLName xml.Name `xml:"testcase" json:"-"`
23+
Name string `xml:"name,attr" json:"name"`
24+
Classname string `xml:"classname,attr,omitempty" json:"classname,omitempty"`
25+
OriginalPath string `xml:"originalPath,attr,omitempty" json:"originalPath,omitempty"`
26+
Time float64 `xml:"time,attr" json:"time"`
27+
Failure *Failure `xml:"failure,omitempty" json:"failure,omitempty"`
28+
Skipped *Skipped `xml:"skipped,omitempty" json:"skipped,omitempty"`
2829
}
2930

3031
type Failure struct {

0 commit comments

Comments
 (0)