Skip to content

Commit 13663be

Browse files
broothieclaude
andauthored
Refactor: Convert tests from broothie/test to testify (#16)
* Convert tests from broothie/test to testify - Replace all instances of broothie/test with stretchr/testify - Use assert.* for test assertions and require.* for must-pass conditions - Update go.mod and go.sum to remove broothie/test dependency and add testify - Maintain existing test logic and behavior 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Fix testify usage: use assert.* for most assertions, require.* only for Must functions - Convert most require.NoError back to assert.NoError - Keep require.NoError only for the original test.MustNoError call - Maintain proper distinction between assertions and requirements 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * Remove unused require imports from test files --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 41ddddc commit 13663be

11 files changed

+119
-116
lines changed

argument_config_validation_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,25 @@ package cli
33
import (
44
"testing"
55

6-
"github.com/broothie/test"
6+
"github.com/stretchr/testify/assert"
77
)
88

99
func TestArgument_validateConfig(t *testing.T) {
1010
t.Run("empty name", func(t *testing.T) {
1111
arg := &Argument{name: ""}
1212
err := arg.validateConfig()
13-
test.ErrorMessageIs(t, err, "argument name cannot be empty")
13+
assert.EqualError(t, err, "argument name cannot be empty")
1414
})
1515

1616
t.Run("multiple tokens", func(t *testing.T) {
1717
arg := &Argument{name: "invalid argument name"}
1818
err := arg.validateConfig()
19-
test.ErrorMessageIs(t, err, `argument name "invalid argument name" must be a single token`)
19+
assert.EqualError(t, err, `argument name "invalid argument name" must be a single token`)
2020
})
2121

2222
t.Run("valid name", func(t *testing.T) {
2323
arg := &Argument{name: "valid-arg"}
2424
err := arg.validateConfig()
25-
test.NoError(t, err)
25+
assert.NoError(t, err)
2626
})
2727
}

argument_input_validation_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ package cli
33
import (
44
"testing"
55

6-
"github.com/broothie/test"
6+
"github.com/stretchr/testify/assert"
7+
"github.com/stretchr/testify/require"
78
)
89

910
func TestArgument_validateInput(t *testing.T) {
1011
arg, err := newArgument("test-arg", "Test arg.")
11-
test.MustNoError(t, err)
12+
require.NoError(t, err)
1213

13-
test.ErrorMessageIs(t, arg.validateInput(), `argument "test-arg": argument missing value`)
14+
assert.EqualError(t, arg.validateInput(), `argument "test-arg": argument missing value`)
1415

1516
arg.value = "something"
16-
test.NoError(t, arg.validateInput())
17+
assert.NoError(t, arg.validateInput())
1718
}

cli_test.go

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import (
44
"context"
55
"testing"
66

7-
"github.com/broothie/test"
87
"github.com/samber/lo"
8+
"github.com/stretchr/testify/assert"
99
)
1010

1111
func ensureCalled(t *testing.T) func() {
1212
called := false
13-
t.Cleanup(func() { test.True(t, called) })
13+
t.Cleanup(func() { assert.True(t, called) })
1414

1515
return func() { called = true }
1616
}
@@ -42,8 +42,8 @@ func Test_git(t *testing.T) {
4242
called()
4343

4444
gitDir, err := FlagValue[string](ctx, "git-dir")
45-
test.NoError(t, err)
46-
test.Equal(t, "/path/to/something", gitDir)
45+
assert.NoError(t, err)
46+
assert.Equal(t, "/path/to/something", gitDir)
4747

4848
return nil
4949
}
@@ -57,8 +57,8 @@ func Test_git(t *testing.T) {
5757
called()
5858

5959
gitDir, err := FlagValue[string](ctx, "git-dir")
60-
test.NoError(t, err)
61-
test.Equal(t, "/path/to/something", gitDir)
60+
assert.NoError(t, err)
61+
assert.Equal(t, "/path/to/something", gitDir)
6262

6363
return nil
6464
}
@@ -82,8 +82,8 @@ func Test_git(t *testing.T) {
8282
called()
8383

8484
message, err := FlagValue[string](ctx, "message")
85-
test.NoError(t, err)
86-
test.Equal(t, "a commit message", message)
85+
assert.NoError(t, err)
86+
assert.Equal(t, "a commit message", message)
8787

8888
return nil
8989
}
@@ -97,12 +97,12 @@ func Test_git(t *testing.T) {
9797
called()
9898

9999
isAll, err := FlagValue[bool](ctx, "all")
100-
test.NoError(t, err)
101-
test.False(t, isAll)
100+
assert.NoError(t, err)
101+
assert.False(t, isAll)
102102

103103
message, err := FlagValue[string](ctx, "message")
104-
test.NoError(t, err)
105-
test.Equal(t, "a commit message", message)
104+
assert.NoError(t, err)
105+
assert.Equal(t, "a commit message", message)
106106

107107
return nil
108108
}
@@ -116,12 +116,12 @@ func Test_git(t *testing.T) {
116116
called()
117117

118118
isAll, err := FlagValue[bool](ctx, "all")
119-
test.NoError(t, err)
120-
test.False(t, isAll)
119+
assert.NoError(t, err)
120+
assert.False(t, isAll)
121121

122122
message, err := FlagValue[string](ctx, "message")
123-
test.NoError(t, err)
124-
test.Equal(t, "a commit message", message)
123+
assert.NoError(t, err)
124+
assert.Equal(t, "a commit message", message)
125125

126126
return nil
127127
}
@@ -135,12 +135,12 @@ func Test_git(t *testing.T) {
135135
called()
136136

137137
isAll, err := FlagValue[bool](ctx, "all")
138-
test.NoError(t, err)
139-
test.True(t, isAll)
138+
assert.NoError(t, err)
139+
assert.True(t, isAll)
140140

141141
message, err := FlagValue[string](ctx, "message")
142-
test.NoError(t, err)
143-
test.Equal(t, "a commit message", message)
142+
assert.NoError(t, err)
143+
assert.Equal(t, "a commit message", message)
144144

145145
return nil
146146
}
@@ -154,8 +154,8 @@ func Test_git(t *testing.T) {
154154
called()
155155

156156
branch, err := ArgValue[string](ctx, "branch")
157-
test.NoError(t, err)
158-
test.Equal(t, "some-branch", branch)
157+
assert.NoError(t, err)
158+
assert.Equal(t, "some-branch", branch)
159159

160160
return nil
161161
}
@@ -169,12 +169,12 @@ func Test_git(t *testing.T) {
169169
called()
170170

171171
branch, err := ArgValue[string](ctx, "branch")
172-
test.NoError(t, err)
173-
test.Equal(t, "some-branch", branch)
172+
assert.NoError(t, err)
173+
assert.Equal(t, "some-branch", branch)
174174

175175
isNewBranch, err := FlagValue[bool](ctx, "new-branch")
176-
test.NoError(t, err)
177-
test.True(t, isNewBranch)
176+
assert.NoError(t, err)
177+
assert.True(t, isNewBranch)
178178

179179
return nil
180180
}
@@ -188,8 +188,8 @@ func Test_git(t *testing.T) {
188188
called()
189189

190190
globalGitignore, err := FlagValue[string](ctx, "global-gitignore")
191-
test.NoError(t, err)
192-
test.Equal(t, globalGitignore, "path/to/some/.gitignore")
191+
assert.NoError(t, err)
192+
assert.Equal(t, globalGitignore, "path/to/some/.gitignore")
193193
return nil
194194
}
195195
},
@@ -228,8 +228,8 @@ func Test_git(t *testing.T) {
228228
SetHandler(lo.IfF(testCase.gitHandler != nil, func() Handler { return testCase.gitHandler(t) }).Else(nil)),
229229
)
230230

231-
test.NoError(t, err)
232-
test.Nil(t, command.Run(context.TODO(), testCase.rawArgs))
231+
assert.NoError(t, err)
232+
assert.Nil(t, command.Run(context.TODO(), testCase.rawArgs))
233233
})
234234
}
235235
}

command_config_validation_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"testing"
55

66
"github.com/broothie/option"
7-
"github.com/broothie/test"
7+
"github.com/stretchr/testify/assert"
88
)
99

1010
func TestCommand_config_validations(t *testing.T) {
@@ -47,7 +47,7 @@ func TestCommand_config_validations(t *testing.T) {
4747
for name, testCase := range testCases {
4848
t.Run(name, func(t *testing.T) {
4949
_, err := NewCommand("test", "test command", testCase.commandOptions...)
50-
test.ErrorMessageIs(t, err, testCase.expectedError)
50+
assert.EqualError(t, err, testCase.expectedError)
5151
})
5252
}
5353
}

exit_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@ import (
55
"os/exec"
66
"testing"
77

8-
"github.com/broothie/test"
8+
"github.com/stretchr/testify/assert"
99
)
1010

1111
func TestExitError_Error(t *testing.T) {
1212
err := &ExitError{Code: 2}
13-
test.Equal(t, "exit status 2", err.Error())
13+
assert.Equal(t, "exit status 2", err.Error())
1414
}
1515

1616
func TestExitCode(t *testing.T) {
1717
err := ExitCode(3)
18-
test.Equal(t, 3, err.Code)
18+
assert.Equal(t, 3, err.Code)
1919
}
2020

2121
func TestExitWithError(t *testing.T) {
@@ -30,7 +30,7 @@ func TestExitWithError(t *testing.T) {
3030
err := cmd.Run()
3131

3232
if exitErr, ok := err.(*exec.ExitError); ok {
33-
test.Equal(t, 4, exitErr.ExitCode())
33+
assert.Equal(t, 4, exitErr.ExitCode())
3434
} else {
3535
t.Errorf("expected ExitError, got %v", err)
3636
}

flag_config_validation_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,25 @@ package cli
33
import (
44
"testing"
55

6-
"github.com/broothie/test"
6+
"github.com/stretchr/testify/assert"
77
)
88

99
func TestFlag_validateConfig(t *testing.T) {
1010
t.Run("empty name", func(t *testing.T) {
1111
flag := &Flag{name: ""}
1212
err := flag.validateConfig()
13-
test.ErrorMessageIs(t, err, "flag name cannot be empty")
13+
assert.EqualError(t, err, "flag name cannot be empty")
1414
})
1515

1616
t.Run("multiple tokens", func(t *testing.T) {
1717
flag := &Flag{name: "invalid flag name"}
1818
err := flag.validateConfig()
19-
test.ErrorMessageIs(t, err, `flag name "invalid flag name" must be a single token`)
19+
assert.EqualError(t, err, `flag name "invalid flag name" must be a single token`)
2020
})
2121

2222
t.Run("valid name", func(t *testing.T) {
2323
flag := &Flag{name: "valid-flag"}
2424
err := flag.validateConfig()
25-
test.NoError(t, err)
25+
assert.NoError(t, err)
2626
})
2727
}

flag_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package cli
33
import (
44
"testing"
55

6-
"github.com/broothie/test"
6+
"github.com/stretchr/testify/assert"
77
"github.com/samber/lo"
88
)
99

@@ -16,11 +16,11 @@ func TestCommand_flagsUpToRoot(t *testing.T) {
1616
),
1717
)
1818

19-
test.NoError(t, err)
19+
assert.NoError(t, err)
2020

2121
flags := command.subCommands[0].flagsUpToRoot()
2222
flagNames := lo.Map(flags, func(flag *Flag, _ int) string { return flag.name })
23-
test.Contains(t, flagNames, "top-inherited")
24-
test.Contains(t, flagNames, "flag")
25-
test.NotContains(t, flagNames, "top-uninherited")
23+
assert.Contains(t, flagNames, "top-inherited")
24+
assert.Contains(t, flagNames, "flag")
25+
assert.NotContains(t, flagNames, "top-uninherited")
2626
}

go.mod

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ require (
66
github.com/MakeNowJust/heredoc/v2 v2.0.1
77
github.com/bobg/errors v1.1.0
88
github.com/broothie/option v0.1.0
9-
github.com/broothie/test v0.1.9
109
github.com/samber/lo v1.49.1
10+
github.com/stretchr/testify v1.10.0
1111
)
1212

1313
require (
1414
github.com/davecgh/go-spew v1.1.1 // indirect
15-
github.com/kylelemons/godebug v1.1.0 // indirect
15+
github.com/pmezard/go-difflib v1.0.0 // indirect
1616
golang.org/x/text v0.21.0 // indirect
17+
gopkg.in/yaml.v3 v3.0.1 // indirect
1718
)

go.sum

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,22 @@ github.com/bobg/errors v1.1.0 h1:gsVanPzJMpZQpwY+27/GQYElZez5CuMYwiIpk2A3RGw=
44
github.com/bobg/errors v1.1.0/go.mod h1:Q4775qBZpnte7EGFJqmvnlB1U4pkI1XmU3qxqdp7Zcc=
55
github.com/broothie/option v0.1.0 h1:5l6qdv9g1Ajxn7821brKVzOZxIjlVB0gA1MU8QbW8Fw=
66
github.com/broothie/option v0.1.0/go.mod h1:doEn1r1TpaaBJRdHLZlsdjvnrnH0u1WW+FZA018hE2g=
7-
github.com/broothie/test v0.1.9 h1:YO+pAEssBJPvJEWSvl2dSjhsUFm9xszqOXFVEfiI33Q=
8-
github.com/broothie/test v0.1.9/go.mod h1:txzDcP9OHro3y7goC+ZznIkASy8NJks4dUcdbwsP0HM=
97
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
108
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
11-
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
12-
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
9+
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
10+
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
11+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
12+
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
1313
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1414
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1515
github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
1616
github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o=
1717
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
1818
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
19-
go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
20-
go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
2119
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
2220
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
21+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
22+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
23+
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
2324
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
2425
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 commit comments

Comments
 (0)