{"id":17180211,"url":"https://github.com/huandu/go-assert","last_synced_at":"2025-06-10T11:07:21.083Z","repository":{"id":57490073,"uuid":"113319107","full_name":"huandu/go-assert","owner":"huandu","description":"Magic assert macros for Go.","archived":false,"fork":false,"pushed_at":"2023-07-28T12:30:44.000Z","size":47,"stargazers_count":27,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-27T07:21:20.504Z","etag":null,"topics":["assert","ast","golang","helper-functions","tdd","testing"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/huandu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-06T13:21:06.000Z","updated_at":"2025-01-28T12:02:24.000Z","dependencies_parsed_at":"2024-06-18T17:06:36.427Z","dependency_job_id":null,"html_url":"https://github.com/huandu/go-assert","commit_stats":{"total_commits":34,"total_committers":1,"mean_commits":34.0,"dds":0.0,"last_synced_commit":"8f6fe440ea868969aca47bb26600da2c3a3c3c2f"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huandu%2Fgo-assert","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huandu%2Fgo-assert/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huandu%2Fgo-assert/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/huandu%2Fgo-assert/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/huandu","download_url":"https://codeload.github.com/huandu/go-assert/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248743638,"owners_count":21154708,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assert","ast","golang","helper-functions","tdd","testing"],"created_at":"2024-10-15T00:29:07.616Z","updated_at":"2025-04-13T16:30:34.270Z","avatar_url":"https://github.com/huandu.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Package `assert` - Magic assert macros for Go\n\n![Go](https://github.com/huandu/go-assert/workflows/Go/badge.svg)\n[![Go Doc](https://godoc.org/github.com/huandu/go-assert?status.svg)](https://pkg.go.dev/github.com/huandu/go-assert)\n\nPackage `assert` provides developer a way to assert expression and output useful contextual information automatically when a case fails.\nWith this package, we can focus on writing test code without worrying about how to print lots of verbose debug information for debug.\n\nHere is a quick sample.\n\n```go\nimport \"github.com/huandu/go-assert\"\n\nfunc TestSomething(t *testing.T) {\n    str := Foo(42)\n    assert.Assert(t, str == \"expected\")\n\n    // This case fails with following message.\n    //\n    //     Assertion failed:\n    //         str == \"expected\"\n    //     Referenced variables are assigned in following statements:\n    //         str := Foo(42)\n}\n```\n\n## Import\n\nUse `go get` to install this package.\n\n```shell\ngo get github.com/huandu/go-assert\n```\n\nCurrent stable version is `v1.*`. Old versions tagged by `v0.*` are obsoleted.\n\n## Usage\n\n### Assertion methods\n\nIf we just want to use functions like `Assert`, `Equal` or `NotEqual`, it's recommended to import this package as `.`.\n\n```go\nimport \"github.com/huandu/go-assert\"\n\nfunc TestSomething(t *testing.T) {\n    a, b := 1, 2\n    assert.Assert(t, a \u003e b)\n\n    // This case fails with message:\n    //     Assertion failed:\n    //         a \u003e b\n}\n\nfunc TestAssertEquality(t *testing.T) {\n    assert.Equal(t, map[string]int{\n        \"foo\": 1,\n        \"bar\": -2,\n    }, map[string]int{\n        \"bar\": -2,\n        \"foo\": 10000,\n    })\n\n    // This case fails with message:\n    //     Assertion failed:\n    //     The value of following expression should equal.\n    //     [1] map[string]int{\n    //             \"foo\": 1,\n    //             \"bar\": -2,\n    //         }\n    //     [2] map[string]int{\n    //             \"bar\": -2,\n    //             \"foo\": 10000,\n    //         }\n    //     Values:\n    //     [1] -\u003e (map[string]int)map[bar:-2 foo:1]\n    //     [2] -\u003e (map[string]int)map[bar:-2 foo:10000]\n}\n```\n\n### Advanced assertion wrapper: type `A`\n\nIf we want more controls on assertion, it's recommended to wrap `t` in an `A`.\n\nThere are lots of useful assert methods implemented in `A`.\n\n- [`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.\n- [`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.\n- [`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.\n\nHere is a sample to demonstrate how to use `A#Use` to print related variables in assertion message.\n\n```go\nimport \"github.com/huandu/go-assert\"\n\nfunc TestSomething(t *testing.T) {\n    a := assert.New(t)\n    v1 := 123\n    v2 := []string{\"wrong\", \"right\"}\n    v3 := v2[0]\n    v4 := \"not related\"\n    a.Use(\u0026v1, \u0026v2, \u0026v3, \u0026v4)\n\n    a.Assert(v1 == 123 \u0026\u0026 v3 == \"right\")\n\n    // This case fails with following message.\n    //\n    //     Assertion failed:\n    //         v1 == 123 \u0026\u0026 v3 == \"right\"\n    //     Referenced variables are assigned in following statements:\n    //         v1 := 123\n    //         v3 := v2[0]\n    //     Related variables:\n    //         v1 -\u003e (int)123\n    //         v2 -\u003e ([]string)[wrong right]\n    //         v3 -\u003e (string)wrong\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuandu%2Fgo-assert","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhuandu%2Fgo-assert","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhuandu%2Fgo-assert/lists"}