mirror of
https://github.com/hashicorp/terraform.git
synced 2026-03-21 18:10:30 -04:00
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
// Copyright IBM Corp. 2014, 2026
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
package junit
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func Test_TestJUnitXMLFile_save(t *testing.T) {
|
|
|
|
cases := map[string]struct {
|
|
filename string
|
|
expectError bool
|
|
}{
|
|
"can save output to the specified filename": {
|
|
filename: func() string {
|
|
td := t.TempDir()
|
|
return fmt.Sprintf("%s/output.xml", td)
|
|
}(),
|
|
},
|
|
"returns an error when given a filename that isn't absolute or relative": {
|
|
filename: "~/output.xml",
|
|
expectError: true,
|
|
},
|
|
}
|
|
|
|
for tn, tc := range cases {
|
|
t.Run(tn, func(t *testing.T) {
|
|
j := TestJUnitXMLFile{
|
|
filename: tc.filename,
|
|
}
|
|
|
|
xml := []byte(`<?xml version="1.0" encoding="UTF-8"?><testsuites>
|
|
<testsuite name="example_1.tftest.hcl" tests="1" skipped="0" failures="0" errors="0">
|
|
<testcase name="true_is_true" classname="example_1.tftest.hcl" time="0.005381209"></testcase>
|
|
</testsuite>
|
|
</testsuites>`)
|
|
|
|
diags := j.save(xml)
|
|
|
|
if diags.HasErrors() {
|
|
if !tc.expectError {
|
|
t.Fatalf("got unexpected error: %s", diags.Err())
|
|
}
|
|
// return early if testing error case
|
|
return
|
|
}
|
|
|
|
if !diags.HasErrors() && tc.expectError {
|
|
t.Fatalf("expected an error but got none")
|
|
}
|
|
|
|
fileContent, err := os.ReadFile(tc.filename)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error opening file")
|
|
}
|
|
|
|
if !bytes.Equal(fileContent, xml) {
|
|
t.Fatalf("wanted XML:\n%s\n got XML:\n%s\n", string(xml), string(fileContent))
|
|
}
|
|
})
|
|
}
|
|
}
|