From 4c54f1d44913ccd7e83b3217ccfa74c3a20ef588 Mon Sep 17 00:00:00 2001 From: James Walker Date: Tue, 13 Sep 2022 22:37:21 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=B7=20drone=20ci=20+=20tests=20(#10)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #2 Reviewed-on: https://walkah.dev/walkah/workon/pulls/10 --- .drone.yml | 12 ++++++++++++ tmux/project.go | 5 ++++- tmux/tmux.go | 34 ++++++++++++++++++++++------------ tmux/tmux_test.go | 12 ++++++++++++ 4 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 .drone.yml create mode 100644 tmux/tmux_test.go diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..77ea9f6 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,12 @@ +--- +kind: pipeline +type: docker +name: default + +steps: + - name: tests + image: golang:1.17 + commands: + - apt-get update && apt-get install -y tmux + - go build -v + - go test -v ./... diff --git a/tmux/project.go b/tmux/project.go index 5b80fa7..3e2b916 100644 --- a/tmux/project.go +++ b/tmux/project.go @@ -227,7 +227,10 @@ func getConfigFilePath(name string) string { func sessionExists(name string) bool { t := Tmux{} - sessions := t.ListSessions() + sessions, err := t.ListSessions() + if err != nil { + return false + } for _, s := range sessions { if s == name { return true diff --git a/tmux/tmux.go b/tmux/tmux.go index 9e0eda0..ea63ac8 100644 --- a/tmux/tmux.go +++ b/tmux/tmux.go @@ -1,6 +1,7 @@ package tmux import ( + "errors" "fmt" "os" "os/exec" @@ -18,7 +19,10 @@ func CreateTmux(debug bool) *Tmux { } func (t *Tmux) Exec(args ...string) ([]byte, error) { - bin := t.getBinary() + bin, err := t.getBinary() + if err != nil { + return []byte{}, err + } if t.Debug { fmt.Println(bin, strings.Join(args, " ")) } @@ -32,26 +36,32 @@ func (t *Tmux) Run(args ...string) { } } -func (t *Tmux) Attach(name string) { +func (t *Tmux) Attach(name string) error { args := []string{} args = append(args, "-u", "attach-session", "-t", name) - err := syscall.Exec(t.getBinary(), args, os.Environ()) + bin, err := t.getBinary() if err != nil { - fmt.Println("Error:", err) + return err } + err = syscall.Exec(bin, args, os.Environ()) + if err != nil { + return err + } + return nil } -func (t *Tmux) ListSessions() []string { +func (t *Tmux) ListSessions() ([]string, error) { sessions := []string{} result, err := t.Exec("ls", "-F", "#{session_name}") - if err != nil { + if errors.Is(err, exec.ErrNotFound) { // No active sessions returns as an error. - return sessions + return sessions, err } lines := strings.Trim(string(result), "\n") - return strings.Split(lines, "\n") + fmt.Println("Sessions", lines) + return strings.Split(lines, "\n"), nil } func (t *Tmux) KillSession(name string) error { @@ -59,15 +69,15 @@ func (t *Tmux) KillSession(name string) error { return err } -func (t *Tmux) getBinary() string { +func (t *Tmux) getBinary() (string, error) { if t.BinPath != "" { - return t.BinPath + return t.BinPath, nil } tmux, err := exec.LookPath("tmux") if err != nil { - fmt.Println("Error:", err) + return "", err } - return tmux + return tmux, nil } diff --git a/tmux/tmux_test.go b/tmux/tmux_test.go new file mode 100644 index 0000000..7522832 --- /dev/null +++ b/tmux/tmux_test.go @@ -0,0 +1,12 @@ +package tmux + +import ( + "testing" +) + +func TestListSessions(t *testing.T) { + m := CreateTmux(true) + if _, err := m.ListSessions(); err != nil { + t.Fatalf("ListSessions: %s", err) + } +}