From 60c7fadcfdd1fd4467a5f062a02b115212387c39 Mon Sep 17 00:00:00 2001 From: xiantang Date: Sun, 5 Jun 2022 21:45:18 +0800 Subject: [PATCH 1/7] add test check for windows --- .github/workflows/build.yml | 2 +- air_example.toml | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a23528a4..a458b131 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,7 @@ jobs: build: strategy: matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest, macos-latest, windows-latest] name: build runs-on: ${{ matrix.os }} steps: diff --git a/air_example.toml b/air_example.toml index 8fbe7b05..fcdd06d6 100644 --- a/air_example.toml +++ b/air_example.toml @@ -12,6 +12,16 @@ cmd = "go build -o ./tmp/main ." bin = "tmp/main" # Customize binary, can setup environment variables when run your app. full_bin = "APP_ENV=dev APP_USER=air ./tmp/main" +# Add additional arguments when running binary (bin/full_bin). Will run './tmp/main hello world'. +args_bin = ["hello", "world"] +# Bin for different os, when you define this field, it will be used instead of bin. +#[bin_os] +# linux= "tmp/main" +# darwin= "tmp/main" +# windows= "tmp/main" + + + # Watch these filename extensions. include_ext = ["go", "tpl", "tmpl", "html"] # Ignore these filename extensions or directories. @@ -36,8 +46,6 @@ stop_on_error = true send_interrupt = false # Delay after sending Interrupt signal kill_delay = 500 # ms -# Add additional arguments when running binary (bin/full_bin). Will run './tmp/main hello world'. -args_bin = ["hello", "world"] [log] # Show log time From edb090e8e6f78b5687513c75562a9f530c80ae43 Mon Sep 17 00:00:00 2001 From: xiantang Date: Sun, 5 Jun 2022 21:55:01 +0800 Subject: [PATCH 2/7] add test check for windows --- runner/engine_test.go | 6 ++++++ runner/util_test.go | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/runner/engine_test.go b/runner/engine_test.go index b521e6ba..f2cee396 100644 --- a/runner/engine_test.go +++ b/runner/engine_test.go @@ -122,6 +122,7 @@ func TestRebuild(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -210,6 +211,7 @@ func TestCtrlCWhenHaveKillDelay(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -254,6 +256,7 @@ func TestCtrlCWhenREngineIsRunning(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -313,6 +316,7 @@ func TestRun(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -410,6 +414,7 @@ func TestRebuildWhenRunCmdUsingDLV(t *testing.T) { f() t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -469,6 +474,7 @@ func TestWriteDefaultConfig(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir if err := os.Chdir(tmpDir); err != nil { t.Fatal(err) diff --git a/runner/util_test.go b/runner/util_test.go index bb7e8c3b..b02d10b5 100644 --- a/runner/util_test.go +++ b/runner/util_test.go @@ -146,6 +146,11 @@ func TestAdaptToVariousPlatforms(t *testing.T) { } func Test_killCmd_no_process(t *testing.T) { + // skip windows + if runtime.GOOS == "windows" { + t.Skip("windows") + return + } e := Engine{ config: &config{ Build: cfgBuild{ From 323b5ef4c31ddbf9dacda5a91658ae7a51dbe310 Mon Sep 17 00:00:00 2001 From: xiantang Date: Sun, 5 Jun 2022 22:04:06 +0800 Subject: [PATCH 3/7] add test check for windows --- runner/engine_test.go | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/runner/engine_test.go b/runner/engine_test.go index f2cee396..e078fd11 100644 --- a/runner/engine_test.go +++ b/runner/engine_test.go @@ -122,7 +122,9 @@ func TestRebuild(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer t.Cleanup(func() { + os.RemoveAll(tmpDir) + }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -211,7 +213,9 @@ func TestCtrlCWhenHaveKillDelay(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer t.Cleanup(func() { + os.RemoveAll(tmpDir) + }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -256,7 +260,9 @@ func TestCtrlCWhenREngineIsRunning(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer t.Cleanup(func() { + os.RemoveAll(tmpDir) + }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -316,7 +322,9 @@ func TestRun(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer t.Cleanup(func() { + os.RemoveAll(tmpDir) + }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -414,7 +422,9 @@ func TestRebuildWhenRunCmdUsingDLV(t *testing.T) { f() t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer t.Cleanup(func() { + os.RemoveAll(tmpDir) + }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -474,7 +484,9 @@ func TestWriteDefaultConfig(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer t.Cleanup(func() { + os.RemoveAll(tmpDir) + }) // change dir to tmpDir if err := os.Chdir(tmpDir); err != nil { t.Fatal(err) From 40d7d4eeff960515bfef9ac18fd9feb365b9c8a5 Mon Sep 17 00:00:00 2001 From: xiantang Date: Sun, 5 Jun 2022 22:06:42 +0800 Subject: [PATCH 4/7] regist t clean up --- runner/engine_test.go | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/runner/engine_test.go b/runner/engine_test.go index e078fd11..f7fa00f6 100644 --- a/runner/engine_test.go +++ b/runner/engine_test.go @@ -122,9 +122,6 @@ func TestRebuild(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer t.Cleanup(func() { - os.RemoveAll(tmpDir) - }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -213,9 +210,6 @@ func TestCtrlCWhenHaveKillDelay(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer t.Cleanup(func() { - os.RemoveAll(tmpDir) - }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -260,9 +254,6 @@ func TestCtrlCWhenREngineIsRunning(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer t.Cleanup(func() { - os.RemoveAll(tmpDir) - }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -322,9 +313,6 @@ func TestRun(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer t.Cleanup(func() { - os.RemoveAll(tmpDir) - }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -371,6 +359,9 @@ func checkPortHaveBeenUsed(port int) bool { func initTestEnv(t *testing.T, port int) string { tempDir := t.TempDir() + t.Cleanup(func() { + os.RemoveAll(tempDir) + }) t.Logf("tempDir: %s", tempDir) // generate golang code to tempdir err := generateGoCode(tempDir, port) @@ -422,9 +413,6 @@ func TestRebuildWhenRunCmdUsingDLV(t *testing.T) { f() t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer t.Cleanup(func() { - os.RemoveAll(tmpDir) - }) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -484,9 +472,6 @@ func TestWriteDefaultConfig(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer t.Cleanup(func() { - os.RemoveAll(tmpDir) - }) // change dir to tmpDir if err := os.Chdir(tmpDir); err != nil { t.Fatal(err) From 0cf077c7dacf1935d21b363e1bb3a6e0533c9f96 Mon Sep 17 00:00:00 2001 From: xiantang Date: Mon, 6 Jun 2022 21:38:57 +0800 Subject: [PATCH 5/7] add defer os.RemoveAll for fix windows issue --- runner/engine_test.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/runner/engine_test.go b/runner/engine_test.go index f7fa00f6..f2cee396 100644 --- a/runner/engine_test.go +++ b/runner/engine_test.go @@ -122,6 +122,7 @@ func TestRebuild(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -210,6 +211,7 @@ func TestCtrlCWhenHaveKillDelay(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -254,6 +256,7 @@ func TestCtrlCWhenREngineIsRunning(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -313,6 +316,7 @@ func TestRun(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -359,9 +363,6 @@ func checkPortHaveBeenUsed(port int) bool { func initTestEnv(t *testing.T, port int) string { tempDir := t.TempDir() - t.Cleanup(func() { - os.RemoveAll(tempDir) - }) t.Logf("tempDir: %s", tempDir) // generate golang code to tempdir err := generateGoCode(tempDir, port) @@ -413,6 +414,7 @@ func TestRebuildWhenRunCmdUsingDLV(t *testing.T) { f() t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -472,6 +474,7 @@ func TestWriteDefaultConfig(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) + defer os.RemoveAll(tmpDir) // change dir to tmpDir if err := os.Chdir(tmpDir); err != nil { t.Fatal(err) From 406dfbf259136ffe138533cfa70d6730726f4039 Mon Sep 17 00:00:00 2001 From: xiantang Date: Mon, 6 Jun 2022 21:50:54 +0800 Subject: [PATCH 6/7] add defer os.RemoveAll for fix windows issue --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a458b131..3fd44969 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,11 +15,11 @@ jobs: steps: - name: check out code uses: actions/checkout@v2 - - name: setup Go 1.17 + - name: setup Go 1.18 id: go uses: actions/setup-go@v2 with: - go-version: ^1.17 + go-version: ^1.18 - name: build run: make build - name: run Unit tests. From c707ae551034489a059149312b239bccb07da30a Mon Sep 17 00:00:00 2001 From: xiantang Date: Mon, 6 Jun 2022 21:58:59 +0800 Subject: [PATCH 7/7] add defer os.RemoveAll for fix windows issue --- runner/engine_test.go | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/runner/engine_test.go b/runner/engine_test.go index f2cee396..8f65a83f 100644 --- a/runner/engine_test.go +++ b/runner/engine_test.go @@ -115,6 +115,19 @@ func GetPort() (int, func()) { } } +func removePath(tmpDir string) { + removed := false + for !removed { + os.RemoveAll(tmpDir) + // check if the dir is removed + _, err := os.Stat(tmpDir) + if err != nil { + removed = true + } + } + +} + func TestRebuild(t *testing.T) { // generate a random port port, f := GetPort() @@ -122,7 +135,7 @@ func TestRebuild(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer removePath(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -211,7 +224,7 @@ func TestCtrlCWhenHaveKillDelay(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer removePath(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -256,7 +269,7 @@ func TestCtrlCWhenREngineIsRunning(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer removePath(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -316,7 +329,7 @@ func TestRun(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer removePath(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -414,7 +427,7 @@ func TestRebuildWhenRunCmdUsingDLV(t *testing.T) { f() t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer removePath(tmpDir) // change dir to tmpDir err := os.Chdir(tmpDir) if err != nil { @@ -474,7 +487,7 @@ func TestWriteDefaultConfig(t *testing.T) { t.Logf("port: %d", port) tmpDir := initTestEnv(t, port) - defer os.RemoveAll(tmpDir) + defer removePath(tmpDir) // change dir to tmpDir if err := os.Chdir(tmpDir); err != nil { t.Fatal(err)