Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

error.gno

1.27 Kb · 52 lines
 1package expect
 2
 3import "gno.land/p/nt/ufmt/v0"
 4
 5// NewErrorChecker creates a new checker of errors.
 6func NewErrorChecker(ctx Context, err error) ErrorChecker {
 7	return ErrorChecker{ctx, err}
 8}
 9
10// ErrorChecker asserts error values.
11type ErrorChecker struct {
12	ctx Context
13	err error
14}
15
16// Not negates the next called expectation.
17func (c ErrorChecker) Not() ErrorChecker {
18	c.ctx.negated = !c.ctx.negated
19	return c
20}
21
22// WithMessage asserts that current error contains an expected message.
23func (c ErrorChecker) WithMessage(msg string) {
24	c.ctx.T().Helper()
25
26	if c.err == nil {
27		c.ctx.Fail("Expected an error with message\nGot: nil\nWant: %s", msg)
28		return
29	}
30
31	NewMessageChecker(c.ctx, c.err.Error(), MessageTypeError).WithMessage(msg)
32}
33
34// WithError asserts that current error message is the same as an expected error.
35func (c ErrorChecker) WithError(err error) {
36	c.ctx.T().Helper()
37
38	if c.err == nil {
39		if err != nil {
40			c.ctx.Fail("Expected an error\nGot: nil\nWant: %s", err.Error())
41		}
42		return
43	}
44
45	got := c.err.Error()
46	c.ctx.CheckExpectation(got == err.Error(), func(ctx Context) string {
47		if !ctx.IsNegated() {
48			return ufmt.Sprintf("Expected errors to match\nGot: %s\nWant: %s", got, err.Error())
49		}
50		return ufmt.Sprintf("Expected errors to be different\nGot: %s", got)
51	})
52}