mirror of
				https://github.com/go-delve/delve.git
				synced 2025-11-01 03:42:59 +08:00 
			
		
		
		
	Allow command replay by hitting <enter>
This commit is contained in:
		| @ -23,12 +23,22 @@ func (c *Commands) Register(cmdstr string, cf cmdfunc) { | ||||
| 	c.cmds[cmdstr] = cf | ||||
| } | ||||
|  | ||||
| // Find will look up the command function for the given command input. | ||||
| // If it cannot find the command it will defualt to noCmdAvailable(). | ||||
| // If the command is an empty string it will replay the last command. | ||||
| func (c *Commands) Find(cmdstr string) cmdfunc { | ||||
| 	cmd, ok := c.cmds[cmdstr] | ||||
| 	if !ok { | ||||
| 		if cmdstr == "" { | ||||
| 			return nullCommand | ||||
| 		} | ||||
|  | ||||
| 		return noCmdAvailable | ||||
| 	} | ||||
|  | ||||
| 	// Allow <enter> to replay last command | ||||
| 	c.cmds[""] = cmd | ||||
|  | ||||
| 	return cmd | ||||
| } | ||||
|  | ||||
| @ -40,3 +50,7 @@ func exitFunc() error { | ||||
| 	os.Exit(0) | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func nullCommand() error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @ -37,3 +37,32 @@ func TestCommandRegister(t *testing.T) { | ||||
| 		t.Fatal("wrong command output") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestCommandReplay(t *testing.T) { | ||||
| 	cmds := Commands{make(map[string]cmdfunc)} | ||||
| 	cmds.Register("foo", func() error { return fmt.Errorf("registered command") }) | ||||
| 	cmd := cmds.Find("foo") | ||||
|  | ||||
| 	err := cmd() | ||||
| 	if err.Error() != "registered command" { | ||||
| 		t.Fatal("wrong command output") | ||||
| 	} | ||||
|  | ||||
| 	cmd = cmds.Find("") | ||||
| 	err = cmd() | ||||
| 	if err.Error() != "registered command" { | ||||
| 		t.Fatal("wrong command output") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func TestCommandReplayWithoutPreviousCommand(t *testing.T) { | ||||
| 	var ( | ||||
| 		cmds = Commands{make(map[string]cmdfunc)} | ||||
| 		cmd  = cmds.Find("") | ||||
| 		err  = cmd() | ||||
| 	) | ||||
|  | ||||
| 	if err != nil { | ||||
| 		t.Error("Null command not returned", err) | ||||
| 	} | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Derek Parker
					Derek Parker