Skip to content

Commit

Permalink
Init tmux pkg test
Browse files Browse the repository at this point in the history
  • Loading branch information
alexandrebodin committed Jul 8, 2018
1 parent 40a2856 commit 1ca3ca6
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 50 deletions.
31 changes: 0 additions & 31 deletions tmux/commands.go

This file was deleted.

35 changes: 16 additions & 19 deletions tmux/runner.go → tmux/tmux.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ import (
"strings"
)

// Runner is the underlying struct to run tmux commands
type Runner struct{}

// Options tmux options
type Options struct {
BaseIndex int
Expand All @@ -23,13 +20,13 @@ type Result struct {
Stderr string
}

// Exec runs a command
func (r *Runner) Exec(args ...string) (Result, error) {
// ExecFunc is the execution func (uses exec.Command)
var ExecFunc = func(name string, args ...string) (Result, error) {
var stdin bytes.Buffer
var stderr bytes.Buffer
var stdout bytes.Buffer

cmd := exec.Command("tmux", args...)
cmd := exec.Command(name, args...)
cmd.Stdin = &stdin
cmd.Stdout = &stdout
cmd.Stderr = &stderr
Expand All @@ -42,14 +39,19 @@ func (r *Runner) Exec(args ...string) (Result, error) {
return Result{stdout.String(), stderr.String()}, nil
}

// Exec runs a tmux command
func Exec(args ...string) (Result, error) {
return ExecFunc("tmux", args...)
}

// SendKeys sends keys to tmux (e.g to run a command)
func (r *Runner) SendKeys(target, keys string) error {
_, err := r.Exec("send-keys", "-R", "-t", target, keys, "C-m")
func SendKeys(target, keys string) error {
_, err := Exec("send-keys", "-R", "-t", target, keys, "C-m")
return err
}

// SendRawKeys sends keys to tmux (e.g to run a command)
func (r *Runner) SendRawKeys(target, keys string) error {
func SendRawKeys(target, keys string) error {
_, err := Exec("send-keys", "-R", "-t", target, keys)
return err
}
Expand All @@ -58,7 +60,7 @@ func (r *Runner) SendRawKeys(target, keys string) error {
type SessionInfo struct{}

// ListSessions returns the list of sessions currently running
func (r *Runner) ListSessions() (map[string]SessionInfo, error) {
func ListSessions() (map[string]SessionInfo, error) {
sessionMap := make(map[string]SessionInfo)

res, err := Exec("ls")
Expand All @@ -81,23 +83,18 @@ func (r *Runner) ListSessions() (map[string]SessionInfo, error) {
}

// GetOptions get tmux options
func (r *Runner) GetOptions() (*Options, error) {
func GetOptions() (*Options, error) {
options := &Options{
BaseIndex: 0,
PaneBaseIndex: 0,
}

var stderr bytes.Buffer
var stdout bytes.Buffer
cmd := exec.Command("sh", "-c", "tmux start-server\\; show-options -g\\; show-window-options -g")
cmd.Stdout = &stdout

err := cmd.Run()
result, err := ExecFunc("sh", "-c", "tmux start-server\\; show-options -g\\; show-window-options -g")
if err != nil {
return options, fmt.Errorf("Error getting tmux options %v, %s", err, stderr.String())
return options, fmt.Errorf("loading tmux options: %v", err)
}

optionsString := strings.Split(stdout.String(), "\n")
optionsString := strings.Split(result.Stdout, "\n")
for _, option := range optionsString {
optionSplits := strings.Split(option, " ")
if len(optionSplits) == 2 {
Expand Down
54 changes: 54 additions & 0 deletions tmux/tmux_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package tmux

import (
"testing"

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

func TestExec(t *testing.T) {
var fnName string
var fnArgs []string
var in = Result{}
ExecFunc = func(name string, args ...string) (Result, error) {
fnName = name
fnArgs = args
return in, nil
}

res, err := Exec("ls")
assert.Nil(t, err)
assert.Equal(t, in, res)
assert.Equal(t, "tmux", fnName)
assert.Equal(t, []string{"ls"}, fnArgs)
}

func TestSendKeys(t *testing.T) {
var fnName string
var fnArgs []string
ExecFunc = func(name string, args ...string) (Result, error) {
fnName = name
fnArgs = args
return Result{}, nil
}

err := SendKeys("target", "ls")
assert.Nil(t, err)
assert.Equal(t, "tmux", fnName)
assert.Equal(t, []string{"send-keys", "-R", "-t", "target", "ls", "C-m"}, fnArgs)
}

func TestSendRawKeys(t *testing.T) {
var fnName string
var fnArgs []string
ExecFunc = func(name string, args ...string) (Result, error) {
fnName = name
fnArgs = args
return Result{}, nil
}

err := SendRawKeys("target", "ls")
assert.Nil(t, err)
assert.Equal(t, "tmux", fnName)
assert.Equal(t, []string{"send-keys", "-R", "-t", "target", "ls"}, fnArgs)
}

0 comments on commit 1ca3ca6

Please sign in to comment.