Skip to content

Commit

Permalink
added test
Browse files Browse the repository at this point in the history
  • Loading branch information
rsteube committed Jan 6, 2024
1 parent 5432644 commit 29507f0
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 1 deletion.
1 change: 1 addition & 0 deletions action.go
Original file line number Diff line number Diff line change
Expand Up @@ -452,6 +452,7 @@ func (a Action) UniqueListF(divider string, f func(s string) string) Action {
})
}

// Unless skips invokation if given condition succeeds.
func (a Action) Unless(condition func(c Context) bool) Action {
return ActionCallback(func(c Context) Action {
if condition(c) {
Expand Down
1 change: 1 addition & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
- [Timeout](./carapace/action/timeout.md)
- [UniqueList](./carapace/action/uniqueList.md)
- [UniqueListF](./carapace/action/uniqueListF.md)
- [Unless](./carapace/action/unless.md)
- [Usage](./carapace/action/usage.md)
- [UsageF](./carapace/action/usageF.md)
- [InvokedAction](./carapace/invokedAction.md)
Expand Down
12 changes: 12 additions & 0 deletions docs/src/carapace/action/unless.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Unless

[`Unless`] skips invokation if given [condition]() succeeds.

```go
TODO example
```

![](./unless.cast)

[`Unless`]:https://pkg.go.dev/github.com/rsteube/carapace#Action.Unless
[condition]:https://pkg.go.dev/github.com/rsteube/carapace/pkg/condition
5 changes: 4 additions & 1 deletion example/cmd/modifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

"github.com/rsteube/carapace"
"github.com/rsteube/carapace/pkg/cache"
"github.com/rsteube/carapace/pkg/condition"
"github.com/rsteube/carapace/pkg/style"
"github.com/rsteube/carapace/pkg/traverse"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -50,6 +51,7 @@ func init() {
modifierCmd.Flags().String("timeout", "", "Timeout()")
modifierCmd.Flags().String("uniquelist", "", "UniqueList()")
modifierCmd.Flags().String("uniquelistf", "", "UniqueListF()")
modifierCmd.Flags().String("unless", "", "Unless()")
modifierCmd.Flags().String("usage", "", "Usage()")

rootCmd.AddCommand(modifierCmd)
Expand Down Expand Up @@ -264,7 +266,8 @@ func init() {
}).UniqueListF(",", func(s string) string {
return strings.SplitN(s, ":", 2)[0]
}),
"usage": carapace.ActionValues().Usage("explicit usage"),
"unless": carapace.ActionValues("./local", "~/home", "/abs", "one", "two", "three").Unless(condition.CompletingPath),
"usage": carapace.ActionValues().Usage("explicit usage"),
})

carapace.Gen(modifierCmd).PositionalCompletion(
Expand Down
28 changes: 28 additions & 0 deletions example/cmd/modifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,34 @@ func TestSplitP(t *testing.T) {
Usage("SplitP()"))
})
}
func TestUnless(t *testing.T) {
sandbox.Package(t, "github.com/rsteube/carapace/example")(func(s *sandbox.Sandbox) {
s.Run("modifier", "--unless", "").
Expect(carapace.ActionValues(
"./local",
"~/home",
"/abs",
"one",
"two",
"three",
).Usage("Unless()"))

s.Run("modifier", "--unless", "t").
Expect(carapace.ActionValues(
"two",
"three",
).Usage("Unless()"))

s.Run("modifier", "--unless", ".").
Expect(carapace.ActionValues().Usage("Unless()"))

s.Run("modifier", "--unless", "~").
Expect(carapace.ActionValues().Usage("Unless()"))

s.Run("modifier", "--unless", "/").
Expect(carapace.ActionValues().Usage("Unless()"))
})
}

func TestUniqueList(t *testing.T) {
sandbox.Package(t, "github.com/rsteube/carapace/example")(func(s *sandbox.Sandbox) {
Expand Down

0 comments on commit 29507f0

Please sign in to comment.