mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-19 17:59:05 -05:00
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
// Copyright (c) The OpenTofu Authors
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
// Copyright (c) 2023 HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package moduletest
|
|
|
|
// Status represents the status of a test case, and is defined as an iota within
|
|
// this file.
|
|
//
|
|
// The order of the definitions matter as different statuses do naturally take
|
|
// precedence over others. A test suite that has a mix of pass and fail statuses
|
|
// has failed overall and therefore the fail status is of higher precedence than
|
|
// the pass status.
|
|
//
|
|
// See the Status.Merge function for this requirement being used in action.
|
|
//
|
|
//go:generate go run golang.org/x/tools/cmd/stringer -type=Status status.go
|
|
type Status int
|
|
|
|
const (
|
|
Pending Status = iota
|
|
Skip
|
|
Pass
|
|
Fail
|
|
Error
|
|
)
|
|
|
|
// Merge compares two statuses and returns a status that best represents the two
|
|
// together.
|
|
//
|
|
// This should be used to collate the overall status of a test file or test
|
|
// suite from the collection of test runs that have been executed.
|
|
//
|
|
// Essentially, if a test suite has a bunch of failures and passes the overall
|
|
// status would be failure. If a test suite has all passes, then the test suite
|
|
// would be pass overall.
|
|
//
|
|
// The implementation basically always returns the highest of the two, which
|
|
// means the order the statuses are defined within the iota matters.
|
|
func (status Status) Merge(next Status) Status {
|
|
if next > status {
|
|
return next
|
|
}
|
|
return status
|
|
}
|