mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.5 KiB
115 lines
2.5 KiB
package assertions |
|
|
|
import "fmt" |
|
|
|
// ShouldPanic receives a void, niladic function and expects to recover a panic. |
|
func ShouldPanic(actual interface{}, expected ...interface{}) (message string) { |
|
if fail := need(0, expected); fail != success { |
|
return fail |
|
} |
|
|
|
action, _ := actual.(func()) |
|
|
|
if action == nil { |
|
message = shouldUseVoidNiladicFunction |
|
return |
|
} |
|
|
|
defer func() { |
|
recovered := recover() |
|
if recovered == nil { |
|
message = shouldHavePanicked |
|
} else { |
|
message = success |
|
} |
|
}() |
|
action() |
|
|
|
return |
|
} |
|
|
|
// ShouldNotPanic receives a void, niladic function and expects to execute the function without any panic. |
|
func ShouldNotPanic(actual interface{}, expected ...interface{}) (message string) { |
|
if fail := need(0, expected); fail != success { |
|
return fail |
|
} |
|
|
|
action, _ := actual.(func()) |
|
|
|
if action == nil { |
|
message = shouldUseVoidNiladicFunction |
|
return |
|
} |
|
|
|
defer func() { |
|
recovered := recover() |
|
if recovered != nil { |
|
message = fmt.Sprintf(shouldNotHavePanicked, recovered) |
|
} else { |
|
message = success |
|
} |
|
}() |
|
action() |
|
|
|
return |
|
} |
|
|
|
// ShouldPanicWith receives a void, niladic function and expects to recover a panic with the second argument as the content. |
|
func ShouldPanicWith(actual interface{}, expected ...interface{}) (message string) { |
|
if fail := need(1, expected); fail != success { |
|
return fail |
|
} |
|
|
|
action, _ := actual.(func()) |
|
|
|
if action == nil { |
|
message = shouldUseVoidNiladicFunction |
|
return |
|
} |
|
|
|
defer func() { |
|
recovered := recover() |
|
if recovered == nil { |
|
message = shouldHavePanicked |
|
} else { |
|
if equal := ShouldEqual(recovered, expected[0]); equal != success { |
|
message = serializer.serialize(expected[0], recovered, fmt.Sprintf(shouldHavePanickedWith, expected[0], recovered)) |
|
} else { |
|
message = success |
|
} |
|
} |
|
}() |
|
action() |
|
|
|
return |
|
} |
|
|
|
// ShouldNotPanicWith receives a void, niladic function and expects to recover a panic whose content differs from the second argument. |
|
func ShouldNotPanicWith(actual interface{}, expected ...interface{}) (message string) { |
|
if fail := need(1, expected); fail != success { |
|
return fail |
|
} |
|
|
|
action, _ := actual.(func()) |
|
|
|
if action == nil { |
|
message = shouldUseVoidNiladicFunction |
|
return |
|
} |
|
|
|
defer func() { |
|
recovered := recover() |
|
if recovered == nil { |
|
message = success |
|
} else { |
|
if equal := ShouldEqual(recovered, expected[0]); equal == success { |
|
message = fmt.Sprintf(shouldNotHavePanickedWith, expected[0]) |
|
} else { |
|
message = success |
|
} |
|
} |
|
}() |
|
action() |
|
|
|
return |
|
}
|
|
|