// Package assertions contains the implementations for all assertions which // are referenced in goconvey's `convey` package // (github.com/smartystreets/goconvey/convey) and gunit (github.com/smartystreets/gunit) // for use with the So(...) method. // They can also be used in traditional Go test functions and even in // applications. // // Many of the assertions lean heavily on work done by Aaron Jacobs in his excellent oglematchers library. // (https://github.com/jacobsa/oglematchers) // The ShouldResemble assertion leans heavily on work done by Daniel Jacques in his very helpful go-render library. // (https://github.com/luci/go-render) package assertions import ( "fmt" "runtime" ) // By default we use a no-op serializer. The actual Serializer provides a JSON // representation of failure results on selected assertions so the goconvey // web UI can display a convenient diff. var serializer Serializer = new(noopSerializer) // GoConveyMode provides control over JSON serialization of failures. When // using the assertions in this package from the convey package JSON results // are very helpful and can be rendered in a DIFF view. In that case, this function // will be called with a true value to enable the JSON serialization. By default, // the assertions in this package will not serializer a JSON result, making // standalone ussage more convenient. func GoConveyMode(yes bool) { if yes { serializer = newSerializer() } else { serializer = new(noopSerializer) } } type testingT interface { Error(args ...interface{}) } type Assertion struct { t testingT failed bool } // New swallows the *testing.T struct and prints failed assertions using t.Error. // Example: assertions.New(t).So(1, should.Equal, 1) func New(t testingT) *Assertion { return &Assertion{t: t} } // Failed reports whether any calls to So (on this Assertion instance) have failed. func (this *Assertion) Failed() bool { return this.failed } // So calls the standalone So function and additionally, calls t.Error in failure scenarios. func (this *Assertion) So(actual interface{}, assert assertion, expected ...interface{}) bool { ok, result := So(actual, assert, expected...) if !ok { this.failed = true _, file, line, _ := runtime.Caller(1) this.t.Error(fmt.Sprintf("\n%s:%d\n%s", file, line, result)) } return ok } // So is a convenience function (as opposed to an inconvenience function?) // for running assertions on arbitrary arguments in any context, be it for testing or even // application logging. It allows you to perform assertion-like behavior (and get nicely // formatted messages detailing discrepancies) but without the program blowing up or panicking. // All that is required is to import this package and call `So` with one of the assertions // exported by this package as the second parameter. // The first return parameter is a boolean indicating if the assertion was true. The second // return parameter is the well-formatted message showing why an assertion was incorrect, or // blank if the assertion was correct. // // Example: // // if ok, message := So(x, ShouldBeGreaterThan, y); !ok { // log.Println(message) // } // func So(actual interface{}, assert assertion, expected ...interface{}) (bool, string) { if result := so(actual, assert, expected...); len(result) == 0 { return true, result } else { return false, result } } // so is like So, except that it only returns the string message, which is blank if the // assertion passed. Used to facilitate testing. func so(actual interface{}, assert func(interface{}, ...interface{}) string, expected ...interface{}) string { return assert(actual, expected...) } // assertion is an alias for a function with a signature that the So() // function can handle. Any future or custom assertions should conform to this // method signature. The return value should be an empty string if the assertion // passes and a well-formed failure message if not. type assertion func(actual interface{}, expected ...interface{}) string ////////////////////////////////////////////////////////////////////////////
session(release): write data/sessions/e/6/e60c0c31dd475327: no space left on device
github.com/go-macaron/session@v0.0.0-20190805070824-1a3cdc6f5659/session.go:199 (0x8b2934) gopkg.in/macaron.v1@v1.3.9/context.go:79 (0x83d0a0) github.com/go-macaron/inject@v0.0.0-20160627170012-d8a0b8677191/inject.go:157 (0x80ab07) github.com/go-macaron/inject@v0.0.0-20160627170012-d8a0b8677191/inject.go:135 (0x80a8a8) gopkg.in/macaron.v1@v1.3.9/context.go:121 (0x83d1f8) gopkg.in/macaron.v1@v1.3.9/context.go:112 (0x84fdb5) gopkg.in/macaron.v1@v1.3.9/recovery.go:161 (0x84fda8) gopkg.in/macaron.v1@v1.3.9/logger.go:40 (0x840c73) github.com/go-macaron/inject@v0.0.0-20160627170012-d8a0b8677191/inject.go:157 (0x80ab07) github.com/go-macaron/inject@v0.0.0-20160627170012-d8a0b8677191/inject.go:135 (0x80a8a8) gopkg.in/macaron.v1@v1.3.9/context.go:121 (0x83d1f8) gopkg.in/macaron.v1@v1.3.9/router.go:187 (0x850fc6) gopkg.in/macaron.v1@v1.3.9/router.go:303 (0x8493e5) gopkg.in/macaron.v1@v1.3.9/macaron.go:220 (0x841fca) net/http/server.go:2836 (0x7a79b2) net/http/server.go:1924 (0x7a341b) runtime/asm_amd64.s:1373 (0x46f9f0)