Documentation
¶
Overview ¶
Package got is an enjoyable golang test framework.
Index ¶
- func DefaultFlags(flags ...string)
- func Each(t Testable, iteratee any) (count int)
- func EnsureCoverage(path string, min float64) error
- func Parallel() (n int)
- func Setup(init func(g G)) func(t Testable) G
- type AssertionCtx
- type AssertionErrType
- type AssertionError
- type AssertionErrorReport
- type Assertions
- func (as Assertions) Count(n int) func()
- func (as Assertions) Desc(format string, args ...any) Assertions
- func (as Assertions) E(args ...any)
- func (as Assertions) Eq(x, y any)
- func (as Assertions) Equal(x, y any)
- func (as Assertions) Err(args ...any)
- func (as Assertions) False(x bool)
- func (as Assertions) Gt(x, y any)
- func (as Assertions) Gte(x, y any)
- func (as Assertions) Has(container, item any)
- func (as Assertions) InDelta(x, y any, delta float64)
- func (as Assertions) Is(x, y any)
- func (as Assertions) Len(list any, l int)
- func (as Assertions) Lt(x, y any)
- func (as Assertions) Lte(x, y any)
- func (as Assertions) Must() Assertions
- func (as Assertions) Neq(x, y any)
- func (as Assertions) Nil(args ...any)
- func (as Assertions) NotNil(args ...any)
- func (as Assertions) NotZero(x any)
- func (as Assertions) Panic(fn func()) (val any)
- func (as Assertions) Regex(pattern, str string)
- func (as Assertions) True(x bool)
- func (as Assertions) Zero(x any)
- type Context
- type G
- type Only
- type ReqMIME
- type ResHelper
- type Router
- type Skip
- type Testable
- type Utils
- func (ut Utils) Chdir(dir string)
- func (ut Utils) Context() Context
- func (ut Utils) DoAfter(d time.Duration, do func()) (cancel func())
- func (ut Utils) Error(args ...any)
- func (ut Utils) Errorf(format string, args ...any)
- func (ut Utils) Fatal(args ...any)
- func (ut Utils) Fatalf(format string, args ...any)
- func (ut Utils) Go(f func())
- func (ut Utils) HandleHTTP(file string, value ...any) func(http.ResponseWriter, *http.Request)
- func (ut Utils) JSON(src any) (v any)
- func (ut Utils) Log(args ...any)
- func (ut Utils) MkdirAll(perm fs.FileMode, path string)
- func (ut Utils) Open(create bool, path string) (f *os.File)
- func (ut Utils) PanicAfter(d time.Duration) (cancel func())
- func (ut Utils) Parallel() Utils
- func (ut Utils) PathExists(path string) bool
- func (ut Utils) RandBytes(l int) []byte
- func (ut Utils) RandInt(min, max int) int
- func (ut Utils) RandStr(l int) string
- func (ut Utils) Read(value any) *bytes.Buffer
- func (ut Utils) Render(value any, data any) *bytes.Buffer
- func (ut Utils) Req(method, url string, options ...any) *ResHelper
- func (ut Utils) Run(name string, f func(t G)) bool
- func (ut Utils) Serve() *Router
- func (ut Utils) ServeWith(network, address string) *Router
- func (ut Utils) Setenv(key, value string)
- func (ut Utils) Skip(args ...any)
- func (ut Utils) Skipf(format string, args ...any)
- func (ut Utils) Timeout(d time.Duration) Context
- func (ut Utils) ToJSON(obj any) *bytes.Buffer
- func (ut Utils) ToJSONString(obj any) string
- func (ut Utils) Write(obj any) (writer func(io.Writer))
- func (ut Utils) WriteFile(path string, content any)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultFlags ¶
func DefaultFlags(flags ...string)
DefaultFlags will set the "go test" flag if not yet presented. It must be executed in the init() function. Such as the timeout:
DefaultFlags("timeout=10s")
func Each ¶
Each runs each exported method Fn on type Ctx as a subtest of t. The iteratee can be a struct Ctx or:
iteratee(t Testable) (ctx Ctx)
Each Fn will be called like:
ctx.Fn()
If iteratee is Ctx, its G field will be set to New(t) for each test. Any Fn that has the same name with the embedded one will be ignored.
func EnsureCoverage ¶
EnsureCoverage via report file generated from, for example:
go test -coverprofile=coverage.out
Return error if any file's coverage is less than min, min is a percentage value.
Types ¶
type AssertionCtx ¶
type AssertionCtx struct {
Type AssertionErrType
Details []any
File string
Line int
}
AssertionCtx holds the context of an assertion
type AssertionErrType ¶
type AssertionErrType int
AssertionErrType enum
const ( // AssertionEq type AssertionEq AssertionErrType = iota // AssertionNeqSame type AssertionNeqSame // AssertionNeq type AssertionNeq // AssertionGt type AssertionGt // AssertionGte type AssertionGte // AssertionLt type AssertionLt // AssertionLte type AssertionLte // AssertionInDelta type AssertionInDelta // AssertionTrue type AssertionTrue // AssertionFalse type AssertionFalse // AssertionNil type AssertionNil // AssertionNoArgs type AssertionNoArgs // AssertionNotNil type AssertionNotNil // AssertionNotNilable type AssertionNotNilable // AssertionNotNilableNil type AssertionNotNilableNil // AssertionZero type AssertionZero // AssertionNotZero type AssertionNotZero // AssertionRegex type AssertionRegex // AssertionHas type AssertionHas // AssertionLen type AssertionLen // AssertionErr type AssertionErr // AssertionPanic type AssertionPanic // AssertionIsInChain type AssertionIsInChain // AssertionIsKind type AssertionIsKind // AssertionCount type AssertionCount // AssertionSnapshot type AssertionSnapshot )
type AssertionError ¶
type AssertionError interface {
Report(*AssertionCtx) string
}
AssertionError handler
func NewDefaultAssertionError ¶
func NewDefaultAssertionError(theme gop.Theme, diffTheme diff.Theme) AssertionError
NewDefaultAssertionError handler
type AssertionErrorReport ¶
type AssertionErrorReport func(*AssertionCtx) string
AssertionErrorReport is used to convert a func to AssertionError
func (AssertionErrorReport) Report ¶
func (ae AssertionErrorReport) Report(ac *AssertionCtx) string
Report interface
type Assertions ¶
type Assertions struct {
Testable
ErrorHandler AssertionError
// contains filtered or unexported fields
}
Assertions helpers
func (Assertions) Count ¶
func (as Assertions) Count(n int) func()
Count asserts that the returned function will be called n times
func (Assertions) Desc ¶
func (as Assertions) Desc(format string, args ...any) Assertions
Desc returns a clone with the format description. The description will be printed before the error message.
func (Assertions) Eq ¶
func (as Assertions) Eq(x, y any)
Eq asserts that x equals y when converted to the same type, such as compare float 1.0 and integer 1 . For strict value and type comparison use Assertions.Equal . For how comparison works, see utils.SmartCompare .
func (Assertions) Equal ¶
func (as Assertions) Equal(x, y any)
Equal asserts that x equals y. For loose type comparison use Assertions.Eq, such as compare float 1.0 and integer 1 .
func (Assertions) Err ¶
func (as Assertions) Err(args ...any)
Err asserts that the last item in args is error
func (Assertions) Gt ¶
func (as Assertions) Gt(x, y any)
Gt asserts that x is greater than y. For how comparison works, see utils.SmartCompare .
func (Assertions) Gte ¶
func (as Assertions) Gte(x, y any)
Gte asserts that x is greater than or equal to y. For how comparison works, see utils.SmartCompare .
func (Assertions) Has ¶
func (as Assertions) Has(container, item any)
Has asserts that container has item. The container can be a string, []byte, slice, array, or map. For how comparison works, see utils.SmartCompare .
func (Assertions) InDelta ¶
func (as Assertions) InDelta(x, y any, delta float64)
InDelta asserts that x and y are within the delta of each other. For how comparison works, see utils.SmartCompare .
func (Assertions) Is ¶
func (as Assertions) Is(x, y any)
Is asserts that x is kind of y, it uses reflect.Kind to compare. If x and y are both error type, it will use errors.Is to compare.
func (Assertions) Len ¶
func (as Assertions) Len(list any, l int)
Len asserts that the length of list equals l
func (Assertions) Lt ¶
func (as Assertions) Lt(x, y any)
Lt asserts that x is less than y. For how comparison works, see utils.SmartCompare .
func (Assertions) Lte ¶
func (as Assertions) Lte(x, y any)
Lte asserts that x is less than or equal to b. For how comparison works, see utils.SmartCompare .
func (Assertions) Must ¶
func (as Assertions) Must() Assertions
Must returns a clone with the FailNow enabled. It will exit the current goroutine if the assertion fails.
func (Assertions) Neq ¶
func (as Assertions) Neq(x, y any)
Neq asserts that x not equals y even when converted to the same type. For how comparison works, see utils.SmartCompare .
func (Assertions) Nil ¶
func (as Assertions) Nil(args ...any)
Nil asserts that the last item in args is nilable and nil
func (Assertions) NotNil ¶
func (as Assertions) NotNil(args ...any)
NotNil asserts that the last item in args is nilable and not nil
func (Assertions) NotZero ¶
func (as Assertions) NotZero(x any)
NotZero asserts that x is not zero value for its type.
func (Assertions) Panic ¶
func (as Assertions) Panic(fn func()) (val any)
Panic executes fn and asserts that fn panics
func (Assertions) Regex ¶
func (as Assertions) Regex(pattern, str string)
Regex asserts that str matches the regex pattern
func (Assertions) Zero ¶
func (as Assertions) Zero(x any)
Zero asserts x is zero value for its type.
type G ¶
type G struct {
Testable
Assertions
Utils
// contains filtered or unexported fields
}
G is the helper context, it provides some handy helpers for testing
func (G) Snapshot ¶
Snapshot asserts that x equals the snapshot with the specified name, name should be unique under the same test case. It will create a new snapshot file if the name is not found. The snapshot file will be saved to ".got/snapshots/{TEST_NAME}". To update the snapshot, just change the name of the snapshot or remove the corresponding snapshot file. It will auto-remove the unused snapshot files after the test. The snapshot files should be version controlled. The format of the snapshot file is json.
type ReqMIME ¶
type ReqMIME string
ReqMIME option type, it should be like ".json", "test.json", "a/b/c.jpg", etc
type ResHelper ¶
ResHelper of the request
func (*ResHelper) Bytes ¶
Bytes parses body as *bytes.Buffer and returns the result
func (*ResHelper) Unmarshal ¶
Unmarshal body to v as json, it's like json.Unmarshal.
type Router ¶
type Router struct {
HostURL *url.URL
Server *http.Server
Mux *http.ServeMux
// contains filtered or unexported fields
}
Router of a http server
func (*Router) Route ¶
Route on the pattern. Check the doc of http.ServeMux for the syntax of pattern. It will use Utils.HandleHTTP to handle each request.
type Testable ¶
type Testable interface {
Name() string // same as testing.common.Name
Skipped() bool // same as testing.common.Skipped
Failed() bool // same as testing.common.Failed
Cleanup(func()) // same as testing.common.Cleanup
FailNow() // same as testing.common.FailNow
Fail() // same as testing.common.Fail
Helper() // same as testing.common.Helper
Logf(format string, args ...any) // same as testing.common.Logf
SkipNow() // same as testing.common.Skip
}
Testable interface. Usually, you use *testing.T as it.
type Utils ¶
type Utils struct {
Testable
}
Utils for commonly used methods
func (Utils) Go ¶
func (ut Utils) Go(f func())
Go runs f in a goroutine and wait for it to finish before the test ends.
func (Utils) HandleHTTP ¶
HandleHTTP handles a request. If file exists serve the file content. The file will be used to set the Content-Type header. If the file doesn't exist, the value will be encoded by Utils.Write and used as the response body.
func (Utils) MkdirAll ¶
MkdirAll is like os.MkdirAll but will remove the dir after test and fail the test if error. The default perm is 0755.
func (Utils) Open ¶
Open a file. Override it if create is true. Directories will be auto-created. If the directory and file doesn't exist, it will be removed after the test.
func (Utils) PanicAfter ¶
PanicAfter d duration if the test is still running
func (Utils) PathExists ¶
PathExists checks if path exists
func (Utils) Read ¶
Read all from value. If the value is string and it's a file path, the file content will be read, or the string will be returned. If the value is io.Reader, the reader will be read. If the value is []byte, the value will be returned. Others will be converted to string and returned.
func (Utils) Render ¶
Render template. It will use Utils.Read to read the value as the template string.
func (Utils) Req ¶
Req is a helper method to send http request. It will handle errors automatically, so you don't need to check errors. The method is the http method, default value is "GET". If an option is http.Header, it will be used as the request header. If an option is ReqMIME, it will be used to set the Content-Type header. If an option is context.Context, it will be used as the request context. Other option type will be treat as request body, it will be encoded by Utils.Write. Some request examples:
Req("GET", "http://example.com")
Req("GET", "http://example.com", context.TODO())
Req("POST", "http://example.com", map[string]any{"a": 1})
Req("POST", "http://example.com", http.Header{"Host": "example.com"}, ReqMIME(".json"), map[string]any{"a": 1})
func (Utils) ToJSONString ¶
ToJSONString convert obj to JSON string
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
check-cov
command
Package main ...
|
Package main ... |
|
fixtures
|
|
|
coverage
Package coverage ...
|
Package coverage ... |
|
lib
|
|
|
diff
Package diff ...
|
Package diff ... |
|
got-vscode-extension/snippets
command
Package main ...
|
Package main ... |
|
lcs
Package lcs ...
|
Package lcs ... |
|
mock
Package mock provides a simple way to stub struct methods.
|
Package mock provides a simple way to stub struct methods. |
|
utils
Package utils ...
|
Package utils ... |