[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#985272: ITP: golang-github-huandu-go-assert -- Magic assert macros for Go.



Package: wnpp
Severity: wishlist
Owner: debian@thola.io

* Package name    : golang-github-huandu-go-assert
  Version         : 1.1.5-1
  Upstream Author : Huan Du
* URL             : https://github.com/huandu/go-assert
* License         : Expat
  Programming Lang: Go
  Description     : Magic assert macros for Go.

 Package assert - Magic assert macros for Go Go Go Doc
 (https://pkg.go.dev/github.com/huandu/go-assert)
 .
 Package assert provides developer a way to assert expression and output
 useful contextual information automatically when a case fails.  With this
 package, we can focus on writing test code without worrying about how
 to print lots of verbose debug information for debug.
 .
 Here is a quick sample.
 .
 ```go import "github.com/huandu/go-assert"
 .
 func TestSomething(t *testing.T) {
     str := Foo(42) assert.Assert(t, str == "expected")
 // This case fails with following message.  // //     Assertion failed:
 //         str == "expected" //     Referenced variables are assigned
 in following statements: //         str := Foo(42)
 .
 } ``` Import Use go get to install this package.
 .
 shell go get github.com/huandu/go-assert
 .
 .
 Current stable version is v1.*. Old versions tagged by v0.* are obsoleted.
 UsageAssertion methods If we just want to use functions like Assert,
 Equal or NotEqual, it's recommended to import this package as ..
 .
 ```go import "github.com/huandu/go-assert"
 .
 func TestSomething(t *testing.T) {
     a, b := 1, 2 assert.Assert(t, a > b)
 // This case fails with message: //     Assertion failed: //         a > b
 .
 }
 .
 func TestAssertEquality(t *testing.T) {
     assert.Equal(t, map[string]int{
         "foo": 1, "bar": -2,
     }, map[string]int{
         "bar": -2, "foo": 10000,
     })
 // This case fails with message: //     Assertion failed: //     The
 value of following expression should equal.  //     [1] map[string]int{
 //             "foo": 1, //             "bar": -2, //         } //     [2]
 map[string]int{ //             "bar": -2, //             "foo": 10000, //
 } //     Values: //     [1] -> (map[string]int)map[bar:-2 foo:1] //
 [2] -> (map[string]int)map[bar:-2 foo:10000]
 .
 } ``` Advanced assertion wrapper: type A If we want more controls on
 assertion, it's recommended to wrap t in an A.
 .
 There are lots of useful assert methods implemented in A.  • Assert
 (https://godoc.org/github.com/huandu/go-assert#A.Assert)/Eqaul
 (https://godoc.org/github.com/huandu/go-assert#A.Equal)/NotEqual
 (https://godoc.org/github.com/huandu/go-assert#A.NotEqual):
 Basic assertion methods.• NilError
 (https://godoc.org/github.com/huandu/go-assert#A.NilError)/NonNilError
 (https://godoc.org/github.com/huandu/go-assert#A.NonNilError):
 Test if a func/method returns expected error.• Use
 (https://godoc.org/github.com/huandu/go-assert#A.Use): Track variables. If
 any assert method fails, all variables tracked by A and related in assert
 method will be printed out automatically in assertion message.  Here is
 a sample to demonstrate how to use A#Use to print related variables in
 assertion message.
 .
 ```go import "github.com/huandu/go-assert"
 .
 func TestSomething(t *testing.T) {
     a := assert.New(t) v1 := 123 v2 := []string{"wrong", "right"} v3 :=
     v2[0] v4 := "not related" a.Use(&v1, &v2, &v3, &v4)
 a.Assert(v1 == 123 && v3 == "right")
 .
 // This case fails with following message.  // //     Assertion failed:
 //         v1 == 123 && v3 == "right" //     Referenced variables are
 assigned in following statements: //         v1 := 123 //         v3 :=
 v2[0] //     Related variables: //         v1 -> (int)123 //         v2 ->
 ([]string)[wrong right] //         v3 -> (string)wrong
 .
 }

Reply to: