| package moduletest |
| |
| import ( |
| "github.com/hashicorp/terraform/internal/tfdiags" |
| ) |
| |
| // Assertion is the description of a single test assertion, whether |
| // successful or unsuccessful. |
| type Assertion struct { |
| Outcome Status |
| |
| // Description is a user-provided, human-readable description of what |
| // this assertion represents. |
| Description string |
| |
| // Message is typically relevant only for TestFailed or TestError |
| // assertions, giving a human-readable description of the problem, |
| // formatted in the way our format package expects to receive paragraphs |
| // for terminal word wrapping. |
| Message string |
| |
| // Diagnostics includes diagnostics specific to the current test assertion, |
| // if available. |
| Diagnostics tfdiags.Diagnostics |
| } |
| |
| // Component represents a component being tested, each of which can have |
| // several associated test assertions. |
| type Component struct { |
| Assertions map[string]*Assertion |
| } |
| |
| // Status is an enumeration of possible outcomes of a test assertion. |
| type Status rune |
| |
| //go:generate go run golang.org/x/tools/cmd/stringer -type=Status assertion.go |
| |
| const ( |
| // Pending indicates that the test was registered (during planning) |
| // but didn't register an outcome during apply, perhaps due to being |
| // blocked by some other upstream failure. |
| Pending Status = '?' |
| |
| // Passed indicates that the test condition succeeded. |
| Passed Status = 'P' |
| |
| // Failed indicates that the test condition was valid but did not |
| // succeed. |
| Failed Status = 'F' |
| |
| // Error indicates that the test condition was invalid or that the |
| // test report failed in some other way. |
| Error Status = 'E' |
| ) |
| |
| // SuiteCanPass returns true if a suite containing an assertion with this |
| // status could possibly succeed. The suite as a whole succeeds only if all |
| // of its assertions have statuses where SuiteCanPass returns true. |
| func (s Status) SuiteCanPass() bool { |
| switch s { |
| case Failed, Error: |
| return false |
| default: |
| return true |
| } |
| } |