blob: 5fdc52908830729d40aeac9c485f3f4047d8e534 [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package gtest
import (
func TestReport(t *testing.T) {
// The test data comes from
const data = `<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="3" failures="1" errors="0" time="0.035" timestamp="2011-10-31T18:52:42" name="AllTests">
<testsuite name="MathTest" tests="2" failures="1" errors="0" time="0.015">
<testcase name="Addition" status="run" time="0.007" classname="">
<failure message="Value of: add(1, 1)&#x0A; Actual: 3&#x0A;Expected: 2" type="">...</failure>
<failure message="Value of: add(1, -1)&#x0A; Actual: 1&#x0A;Expected: 0" type="">...</failure>
<testcase name="Subtraction" status="run" time="0.005" classname="">
<testsuite name="LogicTest" tests="1" failures="0" errors="0" time="0.005">
<testcase name="NonContradiction" status="run" time="0.005" classname="">
dir := testutil.TempDir(t)
defer os.RemoveAll(dir)
path := filepath.Join(dir, "output.xml")
if err := ioutil.WriteFile(path, []byte(data), 0644); err != nil {
t.Fatal("Failed to create output.xml: ", err)
report, err := ParseReport(path)
if err != nil {
t.Fatal("Failed to parse output.xml: ", err)
expected := &Report{
Suites: []*TestSuite{{
Name: "MathTest",
Cases: []*TestCase{{
Name: "Addition",
Failures: []Failure{{
Message: "Value of: add(1, 1)\n Actual: 3\nExpected: 2",
}, {
Message: "Value of: add(1, -1)\n Actual: 1\nExpected: 0",
}, {
Name: "Subtraction",
}, {
Name: "LogicTest",
Cases: []*TestCase{{
Name: "NonContradiction",
if diff := cmp.Diff(report, expected); diff != "" {
t.Fatalf("Unexpected parsed result: (-want, +got):\n%s", diff)
expectedNames := []string{"MathTest.Addition"}
names := report.FailedTestNames()
if !reflect.DeepEqual(names, expectedNames) {
t.Errorf("Unexpected failed tests: got %v; want %v", names, expectedNames)