blob: 43d93bdf85b6663afd4278456ff2bebab4d9ad9d [file] [log] [blame]
// Copyright 2020 The Fuchsia 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 testparser
import (
"regexp"
"strings"
)
var (
ctsTestPreamblePattern = regexp.MustCompile(`^dEQP Core .* starting\.\.$`)
ctsTestCaseStartPattern = regexp.MustCompile(`^Test case '(.*)'\.\.$`)
ctsTestCasePattern = regexp.MustCompile(`^(Pass|Fail|QualityWarning|CompatibilityWarning|Pending|NotSupported|ResourceError|InternalError|Crash|Timeout) \(.*\)$`)
)
func parseVulkanCtsTest(lines [][]byte) []TestCaseResult {
var res []TestCaseResult
var displayName = ""
var suiteName string
var caseName string
for _, line := range lines {
line := string(line)
m := ctsTestCaseStartPattern.FindStringSubmatch(line)
if m != nil {
displayName = m[1]
dotIndex := strings.LastIndex(displayName, ".")
suiteName = displayName[0:dotIndex]
caseName = displayName[dotIndex+1:]
continue
}
m = ctsTestCasePattern.FindStringSubmatch(line)
if m == nil {
continue
}
var status TestCaseStatus
// List of results is in framework/qphelper/qpTestLog.c
switch m[1] {
case "Pass", "QualityWarning", "CompatibilityWarning":
status = Pass
case "Fail",
"Pending",
"ResourceError",
"InternalError",
"Crash",
"Timeout":
status = Fail
case "NotSupported":
status = Skip
}
res = append(res, TestCaseResult{
DisplayName: displayName,
SuiteName: suiteName,
CaseName: caseName,
Status: status,
Format: "VulkanCtsTest",
})
displayName = ""
}
// Check for incomplete tests
if displayName != "" {
res = append(res, TestCaseResult{
DisplayName: displayName,
SuiteName: suiteName,
CaseName: caseName,
Status: Fail,
Format: "VulkanCtsTest",
})
}
return res
}