Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions argument_config_validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ package cli
import (
"testing"

"github.com/broothie/test"
"github.com/stretchr/testify/assert"
)

func TestArgument_validateConfig(t *testing.T) {
t.Run("empty name", func(t *testing.T) {
arg := &Argument{name: ""}
err := arg.validateConfig()
test.ErrorMessageIs(t, err, "argument name cannot be empty")
assert.EqualError(t, err, "argument name cannot be empty")
})

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

t.Run("valid name", func(t *testing.T) {
arg := &Argument{name: "valid-arg"}
err := arg.validateConfig()
test.NoError(t, err)
assert.NoError(t, err)
})
}
9 changes: 5 additions & 4 deletions argument_input_validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@ package cli
import (
"testing"

"github.com/broothie/test"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestArgument_validateInput(t *testing.T) {
arg, err := newArgument("test-arg", "Test arg.")
test.MustNoError(t, err)
require.NoError(t, err)

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

arg.value = "something"
test.NoError(t, arg.validateInput())
assert.NoError(t, arg.validateInput())
}
60 changes: 30 additions & 30 deletions cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import (
"context"
"testing"

"github.com/broothie/test"
"github.com/samber/lo"
"github.com/stretchr/testify/assert"
)

func ensureCalled(t *testing.T) func() {
called := false
t.Cleanup(func() { test.True(t, called) })
t.Cleanup(func() { assert.True(t, called) })

return func() { called = true }
}
Expand Down Expand Up @@ -42,8 +42,8 @@ func Test_git(t *testing.T) {
called()

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

return nil
}
Expand All @@ -57,8 +57,8 @@ func Test_git(t *testing.T) {
called()

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

return nil
}
Expand All @@ -82,8 +82,8 @@ func Test_git(t *testing.T) {
called()

message, err := FlagValue[string](ctx, "message")
test.NoError(t, err)
test.Equal(t, "a commit message", message)
assert.NoError(t, err)
assert.Equal(t, "a commit message", message)

return nil
}
Expand All @@ -97,12 +97,12 @@ func Test_git(t *testing.T) {
called()

isAll, err := FlagValue[bool](ctx, "all")
test.NoError(t, err)
test.False(t, isAll)
assert.NoError(t, err)
assert.False(t, isAll)

message, err := FlagValue[string](ctx, "message")
test.NoError(t, err)
test.Equal(t, "a commit message", message)
assert.NoError(t, err)
assert.Equal(t, "a commit message", message)

return nil
}
Expand All @@ -116,12 +116,12 @@ func Test_git(t *testing.T) {
called()

isAll, err := FlagValue[bool](ctx, "all")
test.NoError(t, err)
test.False(t, isAll)
assert.NoError(t, err)
assert.False(t, isAll)

message, err := FlagValue[string](ctx, "message")
test.NoError(t, err)
test.Equal(t, "a commit message", message)
assert.NoError(t, err)
assert.Equal(t, "a commit message", message)

return nil
}
Expand All @@ -135,12 +135,12 @@ func Test_git(t *testing.T) {
called()

isAll, err := FlagValue[bool](ctx, "all")
test.NoError(t, err)
test.True(t, isAll)
assert.NoError(t, err)
assert.True(t, isAll)

message, err := FlagValue[string](ctx, "message")
test.NoError(t, err)
test.Equal(t, "a commit message", message)
assert.NoError(t, err)
assert.Equal(t, "a commit message", message)

return nil
}
Expand All @@ -154,8 +154,8 @@ func Test_git(t *testing.T) {
called()

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

return nil
}
Expand All @@ -169,12 +169,12 @@ func Test_git(t *testing.T) {
called()

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

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

return nil
}
Expand All @@ -188,8 +188,8 @@ func Test_git(t *testing.T) {
called()

globalGitignore, err := FlagValue[string](ctx, "global-gitignore")
test.NoError(t, err)
test.Equal(t, globalGitignore, "path/to/some/.gitignore")
assert.NoError(t, err)
assert.Equal(t, globalGitignore, "path/to/some/.gitignore")
return nil
}
},
Expand Down Expand Up @@ -228,8 +228,8 @@ func Test_git(t *testing.T) {
SetHandler(lo.IfF(testCase.gitHandler != nil, func() Handler { return testCase.gitHandler(t) }).Else(nil)),
)

test.NoError(t, err)
test.Nil(t, command.Run(context.TODO(), testCase.rawArgs))
assert.NoError(t, err)
assert.Nil(t, command.Run(context.TODO(), testCase.rawArgs))
})
}
}
4 changes: 2 additions & 2 deletions command_config_validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"testing"

"github.com/broothie/option"
"github.com/broothie/test"
"github.com/stretchr/testify/assert"
)

func TestCommand_config_validations(t *testing.T) {
Expand Down Expand Up @@ -47,7 +47,7 @@ func TestCommand_config_validations(t *testing.T) {
for name, testCase := range testCases {
t.Run(name, func(t *testing.T) {
_, err := NewCommand("test", "test command", testCase.commandOptions...)
test.ErrorMessageIs(t, err, testCase.expectedError)
assert.EqualError(t, err, testCase.expectedError)
})
}
}
8 changes: 4 additions & 4 deletions exit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ import (
"os/exec"
"testing"

"github.com/broothie/test"
"github.com/stretchr/testify/assert"
)

func TestExitError_Error(t *testing.T) {
err := &ExitError{Code: 2}
test.Equal(t, "exit status 2", err.Error())
assert.Equal(t, "exit status 2", err.Error())
}

func TestExitCode(t *testing.T) {
err := ExitCode(3)
test.Equal(t, 3, err.Code)
assert.Equal(t, 3, err.Code)
}

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

if exitErr, ok := err.(*exec.ExitError); ok {
test.Equal(t, 4, exitErr.ExitCode())
assert.Equal(t, 4, exitErr.ExitCode())
} else {
t.Errorf("expected ExitError, got %v", err)
}
Expand Down
8 changes: 4 additions & 4 deletions flag_config_validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@ package cli
import (
"testing"

"github.com/broothie/test"
"github.com/stretchr/testify/assert"
)

func TestFlag_validateConfig(t *testing.T) {
t.Run("empty name", func(t *testing.T) {
flag := &Flag{name: ""}
err := flag.validateConfig()
test.ErrorMessageIs(t, err, "flag name cannot be empty")
assert.EqualError(t, err, "flag name cannot be empty")
})

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

t.Run("valid name", func(t *testing.T) {
flag := &Flag{name: "valid-flag"}
err := flag.validateConfig()
test.NoError(t, err)
assert.NoError(t, err)
})
}
10 changes: 5 additions & 5 deletions flag_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package cli
import (
"testing"

"github.com/broothie/test"
"github.com/stretchr/testify/assert"
"github.com/samber/lo"
)

Expand All @@ -16,11 +16,11 @@ func TestCommand_flagsUpToRoot(t *testing.T) {
),
)

test.NoError(t, err)
assert.NoError(t, err)

flags := command.subCommands[0].flagsUpToRoot()
flagNames := lo.Map(flags, func(flag *Flag, _ int) string { return flag.name })
test.Contains(t, flagNames, "top-inherited")
test.Contains(t, flagNames, "flag")
test.NotContains(t, flagNames, "top-uninherited")
assert.Contains(t, flagNames, "top-inherited")
assert.Contains(t, flagNames, "flag")
assert.NotContains(t, flagNames, "top-uninherited")
}
5 changes: 3 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ require (
github.com/MakeNowJust/heredoc/v2 v2.0.1
github.com/bobg/errors v1.1.0
github.com/broothie/option v0.1.0
github.com/broothie/test v0.1.9
github.com/samber/lo v1.49.1
github.com/stretchr/testify v1.10.0
)

require (
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
golang.org/x/text v0.21.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
13 changes: 7 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,22 @@ github.com/bobg/errors v1.1.0 h1:gsVanPzJMpZQpwY+27/GQYElZez5CuMYwiIpk2A3RGw=
github.com/bobg/errors v1.1.0/go.mod h1:Q4775qBZpnte7EGFJqmvnlB1U4pkI1XmU3qxqdp7Zcc=
github.com/broothie/option v0.1.0 h1:5l6qdv9g1Ajxn7821brKVzOZxIjlVB0gA1MU8QbW8Fw=
github.com/broothie/option v0.1.0/go.mod h1:doEn1r1TpaaBJRdHLZlsdjvnrnH0u1WW+FZA018hE2g=
github.com/broothie/test v0.1.9 h1:YO+pAEssBJPvJEWSvl2dSjhsUFm9xszqOXFVEfiI33Q=
github.com/broothie/test v0.1.9/go.mod h1:txzDcP9OHro3y7goC+ZznIkASy8NJks4dUcdbwsP0HM=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew=
github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU=
go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Loading