Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 059f7f1f authored by Paul Duffin's avatar Paul Duffin Committed by Gerrit Code Review
Browse files

Merge "Make error handlers treat any failures as fatal"

parents 87d7dd91 ea8a3863
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -396,6 +396,9 @@ func (h simpleErrorHandler) CheckErrors(result *TestResult, errs []error) {
// The default fixture error handler.
//
// Will fail the test immediately if any errors are reported.
//
// If the test fails this handler will call `result.FailNow()` which will exit the goroutine within
// which the test is being run which means that the RunTest() method will not return.
var FixtureExpectsNoErrors = FixtureCustomErrorHandler(
	func(result *TestResult, errs []error) {
		FailIfErrored(result.T, errs)
@@ -411,9 +414,14 @@ var FixtureExpectsNoErrors = FixtureCustomErrorHandler(
//
// The test will not fail if:
// * Multiple errors are reported that do not match the pattern as long as one does match.
//
// If the test fails this handler will call `result.FailNow()` which will exit the goroutine within
// which the test is being run which means that the RunTest() method will not return.
func FixtureExpectsAtLeastOneErrorMatchingPattern(pattern string) FixtureErrorHandler {
	return FixtureCustomErrorHandler(func(result *TestResult, errs []error) {
		FailIfNoMatchingErrors(result.T, pattern, errs)
		if !FailIfNoMatchingErrors(result.T, pattern, errs) {
			result.FailNow()
		}
	})
}

@@ -427,6 +435,9 @@ func FixtureExpectsAtLeastOneErrorMatchingPattern(pattern string) FixtureErrorHa
//
// The test will not fail if:
// * One or more of the patterns does not match an error.
//
// If the test fails this handler will call `result.FailNow()` which will exit the goroutine within
// which the test is being run which means that the RunTest() method will not return.
func FixtureExpectsAllErrorsToMatchAPattern(patterns []string) FixtureErrorHandler {
	return FixtureCustomErrorHandler(func(result *TestResult, errs []error) {
		CheckErrorsAgainstExpectations(result.T, errs, patterns)
+8 −3
Original line number Diff line number Diff line
@@ -456,12 +456,15 @@ func FailIfErrored(t *testing.T, errs []error) {
	}
}

func FailIfNoMatchingErrors(t *testing.T, pattern string, errs []error) {
// Fail if no errors that matched the regular expression were found.
//
// Returns true if a matching error was found, false otherwise.
func FailIfNoMatchingErrors(t *testing.T, pattern string, errs []error) bool {
	t.Helper()

	matcher, err := regexp.Compile(pattern)
	if err != nil {
		t.Errorf("failed to compile regular expression %q because %s", pattern, err)
		t.Fatalf("failed to compile regular expression %q because %s", pattern, err)
	}

	found := false
@@ -477,6 +480,8 @@ func FailIfNoMatchingErrors(t *testing.T, pattern string, errs []error) {
			t.Errorf("errs[%d] = %q", i, err)
		}
	}

	return found
}

func CheckErrorsAgainstExpectations(t *testing.T, errs []error, expectedErrorPatterns []string) {
@@ -497,9 +502,9 @@ func CheckErrorsAgainstExpectations(t *testing.T, errs []error, expectedErrorPat
			for i, err := range errs {
				t.Errorf("errs[%d] = %s", i, err)
			}
			t.FailNow()
		}
	}

}

func SetKatiEnabledForTests(config Config) {