Created
February 15, 2018 23:10
-
-
Save repejota/80553286423113c57f67603938ebb422 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Testing Functions for Go | |
======================== | |
Below is a small collection of testing functions for Go. You don't need to import this as a dependency. Just copy these to your project as needed. | |
No, seriously. They're tiny functions. Just copy them. | |
```go | |
import ( | |
"fmt" | |
"path/filepath" | |
"runtime" | |
"reflect" | |
"testing" | |
) | |
// assert fails the test if the condition is false. | |
func assert(tb testing.TB, condition bool, msg string, v ...interface{}) { | |
if !condition { | |
_, file, line, _ := runtime.Caller(1) | |
fmt.Printf("\033[31m%s:%d: "+msg+"\033[39m\n\n", append([]interface{}{filepath.Base(file), line}, v...)...) | |
tb.FailNow() | |
} | |
} | |
// ok fails the test if an err is not nil. | |
func ok(tb testing.TB, err error) { | |
if err != nil { | |
_, file, line, _ := runtime.Caller(1) | |
fmt.Printf("\033[31m%s:%d: unexpected error: %s\033[39m\n\n", filepath.Base(file), line, err.Error()) | |
tb.FailNow() | |
} | |
} | |
// equals fails the test if exp is not equal to act. | |
func equals(tb testing.TB, exp, act interface{}) { | |
if !reflect.DeepEqual(exp, act) { | |
_, file, line, _ := runtime.Caller(1) | |
fmt.Printf("\033[31m%s:%d:\n\n\texp: %#v\n\n\tgot: %#v\033[39m\n\n", filepath.Base(file), line, exp, act) | |
tb.FailNow() | |
} | |
} | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment