blob: 5a206a3bd017659dbecf4883ed8fd1980db4e6f9 [file] [log] [blame]
package main
import (
"bytes"
"io"
"io/ioutil"
"log"
"os"
"testing"
"time"
)
var goCheckFiles []string = []string{
"gocheck-pass.out",
"gocheck-fail.out",
"gocheck-panic.out",
"gocheck-nofiles.out",
"gocheck-empty.out",
"gocheck-setup-miss.out",
}
var goTestFiles []string = []string{
"gotest.out",
"gotest-0.out",
"gotest-datarace.out",
"gotest-empty.out",
"gotest-fail.out",
"gotest-log.out",
"gotest-multi.out",
"gotest-multierror.out",
"gotest-nofiles.out",
"gotest-num.out",
"gotest-panic.out",
"gotest-pass.out",
"gotest-testify-suite.out",
"gotest-1.5.out",
}
func Test_XMLOuptutGoCheckXUnit(t *testing.T) {
for _, filename := range goCheckFiles {
suites, err := gc_Parse(getInputData(filename))
checkError(err)
generateAndTestXMLXUnit(t, suites, filename)
}
}
func Test_XMLOuptutGoCheckXUnitNet(t *testing.T) {
for _, filename := range goCheckFiles {
suites, err := gc_Parse(getInputData(filename))
checkError(err)
generateAndTestXMLXUnitNet(t, suites, filename)
}
}
func Test_XMLOuptutGoTestXUnit(t *testing.T) {
for _, filename := range goTestFiles {
suites, err := gt_Parse(getInputData(filename))
checkError(err)
generateAndTestXMLXUnit(t, suites, filename)
}
}
func Test_XMLOuptutGoTestXunitNet(t *testing.T) {
for _, filename := range goTestFiles {
suites, err := gt_Parse(getInputData(filename))
checkError(err)
generateAndTestXMLXUnitNet(t, suites, filename)
}
}
func getInputData(filename string) io.Reader {
file, err := getInput("data" + string(os.PathSeparator) + filename)
checkError(err)
return file
}
func getOutputData(outType string, filename string) io.Reader {
file, err := getInput("xml" + string(os.PathSeparator) + outType + string(os.PathSeparator) + filename + ".xml")
checkError(err)
return file
}
func generateXML(suites []*Suite, filename string, xmlTemplate string) []byte {
if len(suites) == 0 {
return []byte("error: no tests found")
}
r, w, _ := os.Pipe()
writeXML(suites, w, xmlTemplate)
w.Close()
xml, err := ioutil.ReadAll(r)
checkError(err)
return xml
}
func generateAndTestXMLXUnit(t *testing.T, suites []*Suite, filename string) {
expected, err := ioutil.ReadAll(getOutputData("xunit", filename))
checkError(err)
var xmlTemplate = xunitTemplate
if len(suites) > 1 {
xmlTemplate = multiTemplate
}
actual := generateXML(suites, filename, xmlTemplate)
if !bytes.Equal(expected, actual) {
t.Errorf("xUnit XML output %s differs from expected", filename)
}
}
func generateAndTestXMLXUnitNet(t *testing.T, suites []*Suite, filename string) {
// run-date="2015-06-05" run-time="18:34:41"
runTime = time.Date(2015, time.June, 5, 18, 34, 41, 0, time.UTC)
expected, err := ioutil.ReadAll(getOutputData("xunit.net", filename))
checkError(err)
actual := generateXML(suites, filename, xunitNetTemplate)
if !bytes.Equal(expected, actual) {
t.Errorf("xUnit.net XML output %s differs from expected", filename)
}
}
func checkError(err error) {
if err != nil {
log.Fatal(err)
}
}