Files
wehub-resource-sync 48b3ccf279
Test / test (windows-latest) (push) Waiting to run
gitleaks / gitleaks (push) Has been skipped
Test / test (ubuntu-latest) (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 12:12:29 +08:00

93 lines
2.1 KiB
Go

package report
import (
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestWriteJunit(t *testing.T) {
tests := []struct {
findings []Finding
testReportName string
expected string
wantEmpty bool
}{
{
testReportName: "simple",
expected: filepath.Join(expectPath, "report", "junit_simple.xml"),
findings: []Finding{
{
Description: "Test Rule",
RuleID: "test-rule",
Match: "line containing secret",
Secret: "a secret",
StartLine: 1,
EndLine: 2,
StartColumn: 1,
EndColumn: 2,
Message: "opps",
File: "auth.py",
Commit: "0000000000000000",
Author: "John Doe",
Email: "johndoe@gmail.com",
Date: "10-19-2003",
Tags: []string{},
},
{
Description: "Test Rule",
RuleID: "test-rule",
Match: "line containing secret",
Secret: "a secret",
StartLine: 2,
EndLine: 3,
StartColumn: 1,
EndColumn: 2,
Message: "",
File: "auth.py",
Commit: "",
Author: "",
Email: "",
Date: "",
Tags: []string{},
},
},
},
{
testReportName: "empty",
expected: filepath.Join(expectPath, "report", "junit_empty.xml"),
findings: []Finding{},
},
}
reporter := JunitReporter{}
for _, test := range tests {
tmpfile, err := os.Create(filepath.Join(t.TempDir(), test.testReportName+".xml"))
require.NoError(t, err)
defer tmpfile.Close()
err = reporter.Write(tmpfile, test.findings)
require.NoError(t, err)
assert.FileExists(t, tmpfile.Name())
got, err := os.ReadFile(tmpfile.Name())
require.NoError(t, err)
if test.wantEmpty {
assert.Empty(t, got)
return
}
want, err := os.ReadFile(test.expected)
require.NoError(t, err)
wantStr := lineEndingReplacer.Replace(string(want))
gotStr := lineEndingReplacer.Replace(string(got))
assert.Equal(t, wantStr, gotStr)
}
}