Skip to content

Commit

Permalink
app: Allocate Metadata map automatically
Browse files Browse the repository at this point in the history
  • Loading branch information
radeksimko committed Jul 11, 2016
1 parent 1efa31f commit bef215f
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
4 changes: 4 additions & 0 deletions app.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,10 @@ func (a *App) Setup() {
a.categories = a.categories.AddCommand(command.Category, command)
}
sort.Sort(a.categories)

if a.Metadata == nil {
a.Metadata = make(map[string]interface{})
}
}

// Run is the entry point to the cli app. Parses the arguments slice and routes
Expand Down
48 changes: 48 additions & 0 deletions command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,54 @@ func TestCommand_Run_DoesNotOverwriteErrorFromBefore(t *testing.T) {
}
}

func TestCommand_Run_BeforeSavesMetadata(t *testing.T) {
var receivedMsgFromAction string
var receivedMsgFromAfter string

app := NewApp()
app.Commands = []Command{
{
Name: "bar",
Before: func(c *Context) error {
c.App.Metadata["msg"] = "hello world"
return nil
},
Action: func(c *Context) error {
msg, ok := c.App.Metadata["msg"]
if !ok {
return errors.New("msg not found")
}
receivedMsgFromAction = msg.(string)
return nil
},
After: func(c *Context) error {
msg, ok := c.App.Metadata["msg"]
if !ok {
return errors.New("msg not found")
}
receivedMsgFromAfter = msg.(string)
return nil
},
},
}

err := app.Run([]string{"foo", "bar"})
if err != nil {
t.Fatalf("expected no error from Run, got %s", err)
}

expectedMsg := "hello world"

if receivedMsgFromAction != expectedMsg {
t.Fatalf("expected msg from Action to match. Given: %q\nExpected: %q",
receivedMsgFromAction, expectedMsg)
}
if receivedMsgFromAfter != expectedMsg {
t.Fatalf("expected msg from After to match. Given: %q\nExpected: %q",
receivedMsgFromAction, expectedMsg)
}
}

func TestCommand_OnUsageError_WithWrongFlagValue(t *testing.T) {
app := NewApp()
app.Commands = []Command{
Expand Down

0 comments on commit bef215f

Please sign in to comment.