From 23f73bb69e04c4269ff11e0b4119ac3881f48af6 Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:02:36 -0700 Subject: [PATCH 01/11] chore: Add GitHub workflows to exercise mage. --- .github/workflows/api.yaml | 19 +++++++++++++++++++ .github/workflows/git.yaml | 19 +++++++++++++++++++ .github/workflows/tmux-vcs-sync.yaml | 19 +++++++++++++++++++ api/magefiles/magefile.go | 14 ++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 .github/workflows/api.yaml create mode 100644 .github/workflows/git.yaml create mode 100644 .github/workflows/tmux-vcs-sync.yaml create mode 100644 api/magefiles/magefile.go diff --git a/.github/workflows/api.yaml b/.github/workflows/api.yaml new file mode 100644 index 0000000..995e74b --- /dev/null +++ b/.github/workflows/api.yaml @@ -0,0 +1,19 @@ +name: api + +on: + pull_request: + push: + +jobs: + mage: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Run Mage + uses: magefile/mage-action@v3 + with: + version: latest + args: test diff --git a/.github/workflows/git.yaml b/.github/workflows/git.yaml new file mode 100644 index 0000000..f8be427 --- /dev/null +++ b/.github/workflows/git.yaml @@ -0,0 +1,19 @@ +name: api + +on: + pull_request: + push: + +jobs: + mage: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Run Mage + uses: magefile/mage-action@v3 + with: + version: latest + args: build test diff --git a/.github/workflows/tmux-vcs-sync.yaml b/.github/workflows/tmux-vcs-sync.yaml new file mode 100644 index 0000000..f8be427 --- /dev/null +++ b/.github/workflows/tmux-vcs-sync.yaml @@ -0,0 +1,19 @@ +name: api + +on: + pull_request: + push: + +jobs: + mage: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Run Mage + uses: magefile/mage-action@v3 + with: + version: latest + args: build test diff --git a/api/magefiles/magefile.go b/api/magefiles/magefile.go new file mode 100644 index 0000000..4c1736b --- /dev/null +++ b/api/magefiles/magefile.go @@ -0,0 +1,14 @@ +//go:build mage +// +build mage + +package main + +import ( + "github.com/magefile/mage/sh" +) + +var Default = Test + +func Test() error { + return sh.Run("go", "test", "./...") +} From 34a9c85e37c948634e28a0713efe29523633a16e Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:11:12 -0700 Subject: [PATCH 02/11] setup go --- .github/workflows/api.yaml | 5 +++++ .github/workflows/git.yaml | 5 +++++ .github/workflows/tmux-vcs-sync.yaml | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/.github/workflows/api.yaml b/.github/workflows/api.yaml index 995e74b..e74180b 100644 --- a/.github/workflows/api.yaml +++ b/.github/workflows/api.yaml @@ -11,6 +11,11 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - + name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: 1.22 - name: Run Mage uses: magefile/mage-action@v3 diff --git a/.github/workflows/git.yaml b/.github/workflows/git.yaml index f8be427..790f0c1 100644 --- a/.github/workflows/git.yaml +++ b/.github/workflows/git.yaml @@ -11,6 +11,11 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - + name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: 1.22 - name: Run Mage uses: magefile/mage-action@v3 diff --git a/.github/workflows/tmux-vcs-sync.yaml b/.github/workflows/tmux-vcs-sync.yaml index f8be427..790f0c1 100644 --- a/.github/workflows/tmux-vcs-sync.yaml +++ b/.github/workflows/tmux-vcs-sync.yaml @@ -11,6 +11,11 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - + name: Set up Go + uses: actions/setup-go@v4 + with: + go-version: 1.22 - name: Run Mage uses: magefile/mage-action@v3 From 57aefbe9a70c2c6f38011e7fbea4bf865c524da6 Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:14:08 -0700 Subject: [PATCH 03/11] Stop triggering on push. --- .github/workflows/api.yaml | 1 - .github/workflows/git.yaml | 1 - .github/workflows/tmux-vcs-sync.yaml | 1 - 3 files changed, 3 deletions(-) diff --git a/.github/workflows/api.yaml b/.github/workflows/api.yaml index e74180b..510e2dc 100644 --- a/.github/workflows/api.yaml +++ b/.github/workflows/api.yaml @@ -2,7 +2,6 @@ name: api on: pull_request: - push: jobs: mage: diff --git a/.github/workflows/git.yaml b/.github/workflows/git.yaml index 790f0c1..6fee9f7 100644 --- a/.github/workflows/git.yaml +++ b/.github/workflows/git.yaml @@ -2,7 +2,6 @@ name: api on: pull_request: - push: jobs: mage: diff --git a/.github/workflows/tmux-vcs-sync.yaml b/.github/workflows/tmux-vcs-sync.yaml index 790f0c1..6fee9f7 100644 --- a/.github/workflows/tmux-vcs-sync.yaml +++ b/.github/workflows/tmux-vcs-sync.yaml @@ -2,7 +2,6 @@ name: api on: pull_request: - push: jobs: mage: From a9d8c9810b74c5786636ee48dd476eeab7b266b9 Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:14:44 -0700 Subject: [PATCH 04/11] Fix workflow names. --- .github/workflows/git.yaml | 2 +- .github/workflows/tmux-vcs-sync.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/git.yaml b/.github/workflows/git.yaml index 6fee9f7..24eacd7 100644 --- a/.github/workflows/git.yaml +++ b/.github/workflows/git.yaml @@ -1,4 +1,4 @@ -name: api +name: git on: pull_request: diff --git a/.github/workflows/tmux-vcs-sync.yaml b/.github/workflows/tmux-vcs-sync.yaml index 6fee9f7..765d329 100644 --- a/.github/workflows/tmux-vcs-sync.yaml +++ b/.github/workflows/tmux-vcs-sync.yaml @@ -1,4 +1,4 @@ -name: api +name: tmux-vcs-sync on: pull_request: From 77650782a03d103e9acf2e8f619acf2bc9ab9ae7 Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:17:12 -0700 Subject: [PATCH 05/11] Fix go.mod (again) --- git/go.mod | 2 +- git/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/git/go.mod b/git/go.mod index d5c8632..94dadd5 100644 --- a/git/go.mod +++ b/git/go.mod @@ -2,7 +2,7 @@ module github.com/JeffFaer/tmux-vcs-sync/git go 1.22.0 -require github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213043525-82bc554b024e +require github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213050937-27e0ee44149e require ( github.com/adrg/xdg v0.4.0 // indirect diff --git a/git/go.sum b/git/go.sum index 053fc90..16ed135 100644 --- a/git/go.sum +++ b/git/go.sum @@ -1,5 +1,5 @@ -github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213043525-82bc554b024e h1:4JLG9FSywRxaUi8c1wuefaYONpeuYM/IpKLH2S3EbEc= -github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213043525-82bc554b024e/go.mod h1:jN9qfsBwxfLdhUbwSIFbM+izWRtPz0kbYyf3/197PH8= +github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213050937-27e0ee44149e h1:62QDhCvRRyGUb8AM1jMzprNomC4RZU3cEjMvLaWzXRw= +github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213050937-27e0ee44149e/go.mod h1:jN9qfsBwxfLdhUbwSIFbM+izWRtPz0kbYyf3/197PH8= github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= diff --git a/go.mod b/go.mod index c6e1119..e9264f4 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/JeffFaer/tmux-vcs-sync go 1.22.0 require ( - github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213043525-82bc554b024e + github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213050937-27e0ee44149e github.com/adrg/xdg v0.4.0 github.com/avast/retry-go/v4 v4.5.1 github.com/creack/pty v1.1.21 diff --git a/go.sum b/go.sum index 003f17e..419b5fe 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213043525-82bc554b024e h1:4JLG9FSywRxaUi8c1wuefaYONpeuYM/IpKLH2S3EbEc= -github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213043525-82bc554b024e/go.mod h1:jN9qfsBwxfLdhUbwSIFbM+izWRtPz0kbYyf3/197PH8= +github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213050937-27e0ee44149e h1:62QDhCvRRyGUb8AM1jMzprNomC4RZU3cEjMvLaWzXRw= +github.com/JeffFaer/tmux-vcs-sync/api v0.0.0-20240213050937-27e0ee44149e/go.mod h1:jN9qfsBwxfLdhUbwSIFbM+izWRtPz0kbYyf3/197PH8= github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= github.com/avast/retry-go/v4 v4.5.1 h1:AxIx0HGi4VZ3I02jr78j5lZ3M6x1E0Ivxa6b0pUUh7o= From cf520c1f76594e998baa03884230f86adc369bd1 Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:19:38 -0700 Subject: [PATCH 06/11] Make mage verbose. --- .github/workflows/api.yaml | 2 +- .github/workflows/git.yaml | 2 +- .github/workflows/tmux-vcs-sync.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/api.yaml b/.github/workflows/api.yaml index 510e2dc..8e34e84 100644 --- a/.github/workflows/api.yaml +++ b/.github/workflows/api.yaml @@ -20,4 +20,4 @@ jobs: uses: magefile/mage-action@v3 with: version: latest - args: test + args: -v test diff --git a/.github/workflows/git.yaml b/.github/workflows/git.yaml index 24eacd7..eba907e 100644 --- a/.github/workflows/git.yaml +++ b/.github/workflows/git.yaml @@ -20,4 +20,4 @@ jobs: uses: magefile/mage-action@v3 with: version: latest - args: build test + args: -v build test diff --git a/.github/workflows/tmux-vcs-sync.yaml b/.github/workflows/tmux-vcs-sync.yaml index 765d329..8ff4f88 100644 --- a/.github/workflows/tmux-vcs-sync.yaml +++ b/.github/workflows/tmux-vcs-sync.yaml @@ -20,4 +20,4 @@ jobs: uses: magefile/mage-action@v3 with: version: latest - args: build test + args: -v build test From 727ff77de02531507b1bf5909440697402ea0986 Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:22:33 -0700 Subject: [PATCH 07/11] Set workdir for the other modules. --- .github/workflows/api.yaml | 1 + .github/workflows/git.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/api.yaml b/.github/workflows/api.yaml index 8e34e84..b48dd9e 100644 --- a/.github/workflows/api.yaml +++ b/.github/workflows/api.yaml @@ -20,4 +20,5 @@ jobs: uses: magefile/mage-action@v3 with: version: latest + workdir: api args: -v test diff --git a/.github/workflows/git.yaml b/.github/workflows/git.yaml index eba907e..5a69884 100644 --- a/.github/workflows/git.yaml +++ b/.github/workflows/git.yaml @@ -20,4 +20,5 @@ jobs: uses: magefile/mage-action@v3 with: version: latest + workdir: git args: -v build test From f2f7fc5530d8de7e548759050b981a463b7f9ffe Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:34:18 -0700 Subject: [PATCH 08/11] Also log the kill error. --- tmux/tmux_test.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tmux/tmux_test.go b/tmux/tmux_test.go index 98ed2de..b3c536a 100644 --- a/tmux/tmux_test.go +++ b/tmux/tmux_test.go @@ -158,7 +158,7 @@ func RunInTTY(t *testing.T, cmd *exec.Command) *os.File { } t.Cleanup(func() { if err := cmd.Process.Kill(); err != nil { - t.Logf("Could not kill process %v", cmd.Process) + t.Logf("Could not kill process %d: %v", cmd.Process.Pid, err) } }) return pty @@ -213,9 +213,8 @@ func TestServer_AttachOrSwitch(t *testing.T) { return nil }, retry.Delay(10*time.Millisecond), retry.Context(ctx)) if err != nil { - t.Error(err) + t.Fatal(err) } - if id := client.MustProperties(ClientProperty(SessionID))[ClientProperty(SessionID)]; id != a.ID { t.Errorf("Client is connected to %q, expected %q", id, a.ID) } From 516645aff34343a2dc5f562aa90ced955709a3b7 Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:40:22 -0700 Subject: [PATCH 09/11] Capture output from the command being executed on the tty. --- tmux/tmux_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tmux/tmux_test.go b/tmux/tmux_test.go index b3c536a..88881ac 100644 --- a/tmux/tmux_test.go +++ b/tmux/tmux_test.go @@ -1,6 +1,7 @@ package tmux import ( + "bytes" "context" "encoding/binary" "fmt" @@ -148,9 +149,10 @@ func RunInTTY(t *testing.T, cmd *exec.Command) *os.File { } }) + var stdout, stderr bytes.Buffer cmd.Stdin = tty - cmd.Stdout = tty - cmd.Stderr = tty + cmd.Stdout = &stdout + cmd.Stderr = &stderr t.Logf("Running command in tty %s: %v", tty.Name(), cmd) if err := cmd.Start(); err != nil { @@ -158,7 +160,7 @@ func RunInTTY(t *testing.T, cmd *exec.Command) *os.File { } t.Cleanup(func() { if err := cmd.Process.Kill(); err != nil { - t.Logf("Could not kill process %d: %v", cmd.Process.Pid, err) + t.Logf("Could not kill process %d: %v\n\nstdout\n%s\n\nstderr\n%s", cmd.Process.Pid, err, string(stdout.Bytes()), string(stderr.Bytes())) } }) return pty From d23dfedd8939c64c204af17acbcbcd37204bad72 Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:46:14 -0700 Subject: [PATCH 10/11] Explicitly set term. --- tmux/tmux_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tmux/tmux_test.go b/tmux/tmux_test.go index 88881ac..5cb8045 100644 --- a/tmux/tmux_test.go +++ b/tmux/tmux_test.go @@ -149,10 +149,12 @@ func RunInTTY(t *testing.T, cmd *exec.Command) *os.File { } }) + t.Log(os.Environ()) var stdout, stderr bytes.Buffer cmd.Stdin = tty cmd.Stdout = &stdout cmd.Stderr = &stderr + cmd.Env = append(cmd.Env, "TERM=xterm-256color") t.Logf("Running command in tty %s: %v", tty.Name(), cmd) if err := cmd.Start(); err != nil { From 6aa25f9b8b728f366e5d51c4bbba8ee95eebd90a Mon Sep 17 00:00:00 2001 From: Jeffrey Faer Date: Mon, 12 Feb 2024 22:56:35 -0700 Subject: [PATCH 11/11] Reset more of tmux/tmux_test. --- tmux/tmux_test.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tmux/tmux_test.go b/tmux/tmux_test.go index 5cb8045..ee38a82 100644 --- a/tmux/tmux_test.go +++ b/tmux/tmux_test.go @@ -1,7 +1,6 @@ package tmux import ( - "bytes" "context" "encoding/binary" "fmt" @@ -149,12 +148,12 @@ func RunInTTY(t *testing.T, cmd *exec.Command) *os.File { } }) - t.Log(os.Environ()) - var stdout, stderr bytes.Buffer cmd.Stdin = tty - cmd.Stdout = &stdout - cmd.Stderr = &stderr - cmd.Env = append(cmd.Env, "TERM=xterm-256color") + cmd.Stdout = tty + cmd.Stderr = tty + // tmux needs TERM to be set, and it isn't inherited from the parent process + // in GitHub Actions. + cmd.Env = append(cmd.Environ(), "TERM=xterm-256color") t.Logf("Running command in tty %s: %v", tty.Name(), cmd) if err := cmd.Start(); err != nil { @@ -162,7 +161,7 @@ func RunInTTY(t *testing.T, cmd *exec.Command) *os.File { } t.Cleanup(func() { if err := cmd.Process.Kill(); err != nil { - t.Logf("Could not kill process %d: %v\n\nstdout\n%s\n\nstderr\n%s", cmd.Process.Pid, err, string(stdout.Bytes()), string(stderr.Bytes())) + t.Logf("Could not kill process %d: %v", cmd.Process.Pid, err) } }) return pty