From cc85d6bf0b268dfb5b5164a940f9a18c3cdd64c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Mon, 10 Feb 2020 19:07:36 +0100 Subject: [PATCH 1/4] chore: only use TestCheckCombine() when necessary --- internal/core/testing.go | 1 + .../instance/v1/custom_server_create_test.go | 24 ++++++------- .../instance/v1/custom_server_test.go | 36 +++++++++---------- .../instance/v1/instance_cli_test.go | 12 ++----- 4 files changed, 30 insertions(+), 43 deletions(-) diff --git a/internal/core/testing.go b/internal/core/testing.go index 27a51b7f48..daf7b45b15 100644 --- a/internal/core/testing.go +++ b/internal/core/testing.go @@ -233,6 +233,7 @@ func Test(config *TestConfig) func(t *testing.T) { // TestCheckCombine Combine multiple check function into one func TestCheckCombine(checks ...TestCheck) TestCheck { return func(t *testing.T, ctx *CheckFuncCtx) { + assert.Equal(t, false, len(checks) < 2) for _, check := range checks { check(t, ctx) } diff --git a/internal/namespaces/instance/v1/custom_server_create_test.go b/internal/namespaces/instance/v1/custom_server_create_test.go index ed1f91ab4a..464651d5a2 100644 --- a/internal/namespaces/instance/v1/custom_server_create_test.go +++ b/internal/namespaces/instance/v1/custom_server_create_test.go @@ -22,9 +22,7 @@ func Test_CreateServer(t *testing.T) { t.Run("Usage", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create -h", - Check: core.TestCheckCombine( - core.TestCheckGolden(), - ), + Check: core.TestCheckGolden(), })) //// @@ -82,23 +80,21 @@ func Test_CreateServer(t *testing.T) { t.Run("Image UUID", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=f974feac-abae-4365-b988-8ec7d1cec10d stopped", - Check: core.TestCheckCombine( - func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, "Ubuntu Bionic Beaver", ctx.Result.(*instance.Server).Image.Name) - }, - ), + Check: func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, "Ubuntu Bionic Beaver", ctx.Result.(*instance.Server).Image.Name) + }, + AfterFunc: deleteServerAfterFunc, })) t.Run("Tags", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic tags.0=prod tags.1=blue stopped", - Check: core.TestCheckCombine( - func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, "prod", ctx.Result.(*instance.Server).Tags[0]) - assert.Equal(t, "blue", ctx.Result.(*instance.Server).Tags[1]) - }, - ), + Check: func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, "prod", ctx.Result.(*instance.Server).Tags[0]) + assert.Equal(t, "blue", ctx.Result.(*instance.Server).Tags[1]) + }, + AfterFunc: deleteServerAfterFunc, })) }) diff --git a/internal/namespaces/instance/v1/custom_server_test.go b/internal/namespaces/instance/v1/custom_server_test.go index 574149daf8..14f30fc2af 100644 --- a/internal/namespaces/instance/v1/custom_server_test.go +++ b/internal/namespaces/instance/v1/custom_server_test.go @@ -16,11 +16,10 @@ func Test_ServerUpdateCustom(t *testing.T) { return nil }, Cmd: "scw instance server update server-id={{ .Server.ID }} ip=none", - Check: core.TestCheckCombine( - func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, (*instance.ServerIP)(nil), ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP) - }, - ), + Check: func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, (*instance.ServerIP)(nil), ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP) + }, + AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") return nil @@ -35,11 +34,10 @@ func Test_ServerUpdateCustom(t *testing.T) { return nil }, Cmd: "scw instance server update server-id={{ .Server.ID }} ip={{ .CreateIPResponse.IP.Address }}", - Check: core.TestCheckCombine( - func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address) - }, - ), + Check: func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address) + }, + AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") return nil @@ -56,16 +54,14 @@ func Test_ServerUpdateCustom(t *testing.T) { return nil }, Cmd: "scw instance server update server-id={{ .Server.ID }} ip={{ .CreateIPResponse2.IP.Address }}", - Check: core.TestCheckCombine( - func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, - ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, - ctx.Meta["ServerUpdated"].(*instance.UpdateServerResponse).Server.PublicIP.Address) - assert.Equal(t, - ctx.Meta["CreateIPResponse2"].(*instance.CreateIPResponse).IP.Address, - ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address) - }, - ), + Check: func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, + ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, + ctx.Meta["ServerUpdated"].(*instance.UpdateServerResponse).Server.PublicIP.Address) + assert.Equal(t, + ctx.Meta["CreateIPResponse2"].(*instance.CreateIPResponse).IP.Address, + ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address) + }, AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") ctx.ExecuteCmd("scw instance ip delete ip={{ .CreateIPResponse.IP.Address }}") diff --git a/internal/namespaces/instance/v1/instance_cli_test.go b/internal/namespaces/instance/v1/instance_cli_test.go index 93cac5249c..d653248336 100644 --- a/internal/namespaces/instance/v1/instance_cli_test.go +++ b/internal/namespaces/instance/v1/instance_cli_test.go @@ -51,9 +51,7 @@ func Test_GetServer(t *testing.T) { t.Run("Usage", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server get -h", - Check: core.TestCheckCombine( - core.TestCheckGolden(), - ), + Check: core.TestCheckGolden(), })) t.Run("Simple", core.Test(&core.TestConfig{ @@ -67,9 +65,7 @@ func Test_GetServer(t *testing.T) { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }}") return nil }, - Check: core.TestCheckCombine( - core.TestCheckGolden(), - ), + Check: core.TestCheckGolden(), })) } @@ -100,9 +96,7 @@ func Test_ServerUpdate(t *testing.T) { t.Run("Usage", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server update -h", - Check: core.TestCheckCombine( - core.TestCheckGolden(), - ), + Check: core.TestCheckGolden(), })) t.Run("Simple", core.Test(&core.TestConfig{ From 5508f56924dea0ac39d3877b7280047334962036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Mon, 10 Feb 2020 19:15:16 +0100 Subject: [PATCH 2/4] fix --- internal/core/bootstrap_test.go | 4 +--- internal/core/build_info_test.go | 14 ++++---------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/internal/core/bootstrap_test.go b/internal/core/bootstrap_test.go index 64bbcbedb5..3669bc2f43 100644 --- a/internal/core/bootstrap_test.go +++ b/internal/core/bootstrap_test.go @@ -24,8 +24,6 @@ func TestInterruptError(t *testing.T) { ), UseE2EClient: true, Cmd: "scw test interrupt error", - Check: TestCheckCombine( - TestCheckExitCode(130), - ), + Check: TestCheckExitCode(130), })) } diff --git a/internal/core/build_info_test.go b/internal/core/build_info_test.go index 0f27fb813c..1bd7c6f2eb 100644 --- a/internal/core/build_info_test.go +++ b/internal/core/build_info_test.go @@ -33,9 +33,7 @@ func Test_CheckVersion(t *testing.T) { }, BeforeFunc: deleteLatestVersionUpdateFile, Cmd: "scw plop", - Check: TestCheckCombine( - TestCheckStderrGolden(), - ), + Check: TestCheckStderrGolden(), })) t.Run("Up to date version", Test(&TestConfig{ @@ -45,9 +43,7 @@ func Test_CheckVersion(t *testing.T) { }, BeforeFunc: deleteLatestVersionUpdateFile, Cmd: "scw plop -D", - Check: TestCheckCombine( - TestCheckStderrGolden(), - ), + Check: TestCheckStderrGolden(), })) t.Run("Already checked", Test(&TestConfig{ @@ -61,9 +57,7 @@ func Test_CheckVersion(t *testing.T) { } return fmt.Errorf("failed to create latestVersionUpdateFile") }, - Cmd: "scw plop -D", - Check: TestCheckCombine( - TestCheckStderrGolden(), - ), + Cmd: "scw plop -D", + Check: TestCheckStderrGolden(), })) } From b0b4654adf42e5b0b9bdc9b9373311ea5b71d57e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Mon, 10 Feb 2020 19:18:41 +0100 Subject: [PATCH 3/4] fix --- internal/core/testing.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/core/testing.go b/internal/core/testing.go index daf7b45b15..3d7911d3a8 100644 --- a/internal/core/testing.go +++ b/internal/core/testing.go @@ -233,7 +233,7 @@ func Test(config *TestConfig) func(t *testing.T) { // TestCheckCombine Combine multiple check function into one func TestCheckCombine(checks ...TestCheck) TestCheck { return func(t *testing.T, ctx *CheckFuncCtx) { - assert.Equal(t, false, len(checks) < 2) + assert.Equal(t, true, len(checks) > 1) for _, check := range checks { check(t, ctx) } From acbbdffd83c4d595dd04c73eef838aebfd80d429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Bourgois?= Date: Tue, 11 Feb 2020 11:35:45 +0100 Subject: [PATCH 4/4] add TestCheckExitCode --- internal/core/build_info_test.go | 17 +- .../instance/v1/custom_server_create_test.go | 152 +++++++++++------- .../instance/v1/custom_server_test.go | 39 +++-- .../instance/v1/instance_cli_test.go | 133 ++++++++++----- 4 files changed, 223 insertions(+), 118 deletions(-) diff --git a/internal/core/build_info_test.go b/internal/core/build_info_test.go index 1bd7c6f2eb..f4d6b588f0 100644 --- a/internal/core/build_info_test.go +++ b/internal/core/build_info_test.go @@ -33,7 +33,10 @@ func Test_CheckVersion(t *testing.T) { }, BeforeFunc: deleteLatestVersionUpdateFile, Cmd: "scw plop", - Check: TestCheckStderrGolden(), + Check: TestCheckCombine( + TestCheckStderrGolden(), + TestCheckExitCode(0), + ), })) t.Run("Up to date version", Test(&TestConfig{ @@ -43,7 +46,10 @@ func Test_CheckVersion(t *testing.T) { }, BeforeFunc: deleteLatestVersionUpdateFile, Cmd: "scw plop -D", - Check: TestCheckStderrGolden(), + Check: TestCheckCombine( + TestCheckStderrGolden(), + TestCheckExitCode(0), + ), })) t.Run("Already checked", Test(&TestConfig{ @@ -57,7 +63,10 @@ func Test_CheckVersion(t *testing.T) { } return fmt.Errorf("failed to create latestVersionUpdateFile") }, - Cmd: "scw plop -D", - Check: TestCheckStderrGolden(), + Cmd: "scw plop -D", + Check: TestCheckCombine( + TestCheckStderrGolden(), + TestCheckExitCode(0), + ), })) } diff --git a/internal/namespaces/instance/v1/custom_server_create_test.go b/internal/namespaces/instance/v1/custom_server_create_test.go index 464651d5a2..fdba919c9e 100644 --- a/internal/namespaces/instance/v1/custom_server_create_test.go +++ b/internal/namespaces/instance/v1/custom_server_create_test.go @@ -22,7 +22,10 @@ func Test_CreateServer(t *testing.T) { t.Run("Usage", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create -h", - Check: core.TestCheckGolden(), + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(0), + ), })) //// @@ -37,6 +40,7 @@ func Test_CreateServer(t *testing.T) { func(t *testing.T, ctx *core.CheckFuncCtx) { assert.Equal(t, "Ubuntu Bionic Beaver", ctx.Result.(*instance.Server).Image.Name) }, + core.TestCheckExitCode(0), ), AfterFunc: deleteServerAfterFunc, })) @@ -44,57 +48,73 @@ func Test_CreateServer(t *testing.T) { t.Run("GP1-XS", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create type=GP1-XS image=ubuntu_bionic stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, "GP1-XS", ctx.Result.(*instance.Server).CommercialType) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, "GP1-XS", ctx.Result.(*instance.Server).CommercialType) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("With name", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic name=yo stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, "yo", ctx.Result.(*instance.Server).Name) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, "yo", ctx.Result.(*instance.Server).Name) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("With start", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic -w", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, instance.ServerStateRunning, ctx.Result.(*instance.Server).State) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, instance.ServerStateRunning, ctx.Result.(*instance.Server).State) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("With bootscript", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic bootscript-id=eb760e3c-30d8-49a3-b3ad-ad10c3aa440b stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, "eb760e3c-30d8-49a3-b3ad-ad10c3aa440b", ctx.Result.(*instance.Server).Bootscript.ID) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, "eb760e3c-30d8-49a3-b3ad-ad10c3aa440b", ctx.Result.(*instance.Server).Bootscript.ID) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("Image UUID", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=f974feac-abae-4365-b988-8ec7d1cec10d stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, "Ubuntu Bionic Beaver", ctx.Result.(*instance.Server).Image.Name) - }, - + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, "Ubuntu Bionic Beaver", ctx.Result.(*instance.Server).Image.Name) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("Tags", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic tags.0=prod tags.1=blue stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, "prod", ctx.Result.(*instance.Server).Tags[0]) - assert.Equal(t, "blue", ctx.Result.(*instance.Server).Tags[1]) - }, - + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, "prod", ctx.Result.(*instance.Server).Tags[0]) + assert.Equal(t, "blue", ctx.Result.(*instance.Server).Tags[1]) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) }) @@ -107,30 +127,39 @@ func Test_CreateServer(t *testing.T) { t.Run("valid single local volume", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic root-volume=local:20GB stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, 20*scw.GB, ctx.Result.(*instance.Server).Volumes["0"].Size) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, 20*scw.GB, ctx.Result.(*instance.Server).Volumes["0"].Size) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("valid double local volumes", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic root-volume=local:10GB additional-volumes.0=l:10G stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["0"].Size) - assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["1"].Size) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["0"].Size) + assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["1"].Size) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("valid additional block volumes", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic additional-volumes.0=b:1G additional-volumes.1=b:5G additional-volumes.2=b:10G stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, 1*scw.GB, ctx.Result.(*instance.Server).Volumes["1"].Size) - assert.Equal(t, 5*scw.GB, ctx.Result.(*instance.Server).Volumes["2"].Size) - assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["3"].Size) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, 1*scw.GB, ctx.Result.(*instance.Server).Volumes["1"].Size) + assert.Equal(t, 5*scw.GB, ctx.Result.(*instance.Server).Volumes["2"].Size) + assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["3"].Size) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) @@ -143,21 +172,27 @@ func Test_CreateServer(t *testing.T) { t.Run("explicit new IP", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic ip=new stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address) - assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address) + assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("run with dynamic IP", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic ip=dynamic -w", // dynamic IP is created at runtime - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.NoError(t, ctx.Err) - assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address) - assert.Equal(t, true, ctx.Result.(*instance.Server).DynamicIPRequired) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.NoError(t, ctx.Err) + assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address) + assert.Equal(t, true, ctx.Result.(*instance.Server).DynamicIPRequired) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) @@ -168,10 +203,13 @@ func Test_CreateServer(t *testing.T) { return nil }, Cmd: "scw instance server create image=ubuntu_bionic ip={{ .MyIP.IP.Address }} stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address) - assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address) + assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) @@ -182,19 +220,25 @@ func Test_CreateServer(t *testing.T) { return nil }, Cmd: "scw instance server create image=ubuntu_bionic ip={{ .MyIP.IP.ID }} stopped", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address) - assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address) + assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) t.Run("with ipv6", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server create image=ubuntu_bionic ipv6 -w", // IPv6 is created at runtime - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.NotEmpty(t, ctx.Result.(*instance.Server).IPv6.Address) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.NotEmpty(t, ctx.Result.(*instance.Server).IPv6.Address) + }, + core.TestCheckExitCode(0), + ), AfterFunc: deleteServerAfterFunc, })) }) diff --git a/internal/namespaces/instance/v1/custom_server_test.go b/internal/namespaces/instance/v1/custom_server_test.go index 14f30fc2af..09e4997891 100644 --- a/internal/namespaces/instance/v1/custom_server_test.go +++ b/internal/namespaces/instance/v1/custom_server_test.go @@ -16,10 +16,12 @@ func Test_ServerUpdateCustom(t *testing.T) { return nil }, Cmd: "scw instance server update server-id={{ .Server.ID }} ip=none", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, (*instance.ServerIP)(nil), ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP) - }, - + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, (*instance.ServerIP)(nil), ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") return nil @@ -34,10 +36,12 @@ func Test_ServerUpdateCustom(t *testing.T) { return nil }, Cmd: "scw instance server update server-id={{ .Server.ID }} ip={{ .CreateIPResponse.IP.Address }}", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address) - }, - + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") return nil @@ -54,14 +58,17 @@ func Test_ServerUpdateCustom(t *testing.T) { return nil }, Cmd: "scw instance server update server-id={{ .Server.ID }} ip={{ .CreateIPResponse2.IP.Address }}", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, - ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, - ctx.Meta["ServerUpdated"].(*instance.UpdateServerResponse).Server.PublicIP.Address) - assert.Equal(t, - ctx.Meta["CreateIPResponse2"].(*instance.CreateIPResponse).IP.Address, - ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, + ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, + ctx.Meta["ServerUpdated"].(*instance.UpdateServerResponse).Server.PublicIP.Address) + assert.Equal(t, + ctx.Meta["CreateIPResponse2"].(*instance.CreateIPResponse).IP.Address, + ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") ctx.ExecuteCmd("scw instance ip delete ip={{ .CreateIPResponse.IP.Address }}") diff --git a/internal/namespaces/instance/v1/instance_cli_test.go b/internal/namespaces/instance/v1/instance_cli_test.go index d653248336..54e528e17f 100644 --- a/internal/namespaces/instance/v1/instance_cli_test.go +++ b/internal/namespaces/instance/v1/instance_cli_test.go @@ -22,13 +22,19 @@ func Test_ListServer(t *testing.T) { t.Run("Usage", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server list -h", - Check: core.TestCheckGolden(), + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(0), + ), })) t.Run("Simple", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server list", - Check: core.TestCheckGolden(), + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(0), + ), })) } @@ -36,14 +42,20 @@ func Test_ListServerTypes(t *testing.T) { t.Run("Usage", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server-type list -h", - Check: core.TestCheckGolden(), + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(0), + ), })) t.Run("Simple", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server-type list", UseE2EClient: true, - Check: core.TestCheckGolden(), + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(0), + ), })) } @@ -51,7 +63,10 @@ func Test_GetServer(t *testing.T) { t.Run("Usage", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server get -h", - Check: core.TestCheckGolden(), + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(0), + ), })) t.Run("Simple", core.Test(&core.TestConfig{ @@ -61,11 +76,14 @@ func Test_GetServer(t *testing.T) { return nil }, Cmd: "scw instance server get server-id={{ .Server.ID }}", + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }}") return nil }, - Check: core.TestCheckGolden(), })) } @@ -76,9 +94,12 @@ func Test_CreateVolume(t *testing.T) { t.Run("Simple", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance volume create name=test size=20G", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.Equal(t, "test", ctx.Result.(*instance.CreateVolumeResponse).Volume.Name) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.Equal(t, "test", ctx.Result.(*instance.CreateVolumeResponse).Volume.Name) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance volume delete volume-id=" + ctx.CmdResult.(*instance.CreateVolumeResponse).Volume.ID) return nil @@ -88,7 +109,10 @@ func Test_CreateVolume(t *testing.T) { t.Run("Bad size unit", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance volume create name=test size=20", - Check: core.TestCheckGolden(), + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(1), + ), })) } @@ -96,7 +120,10 @@ func Test_ServerUpdate(t *testing.T) { t.Run("Usage", core.Test(&core.TestConfig{ Commands: GetCommands(), Cmd: "scw instance server update -h", - Check: core.TestCheckGolden(), + Check: core.TestCheckCombine( + core.TestCheckGolden(), + core.TestCheckExitCode(0), + ), })) t.Run("Simple", core.Test(&core.TestConfig{ @@ -123,10 +150,13 @@ func Test_ServerUpdate(t *testing.T) { return nil }, Cmd: "scw instance server update server-id={{ .Server.ID }} placement-group=none", - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - require.NoError(t, ctx.Err) - assert.Nil(t, ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + require.NoError(t, ctx.Err) + assert.Nil(t, ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }}") return nil @@ -140,10 +170,13 @@ func Test_ServerUpdate(t *testing.T) { return nil }, Cmd: `scw instance server update server-id={{ .Server.ID }} placement-group=`, - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - require.NoError(t, ctx.Err) - assert.Nil(t, ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + require.NoError(t, ctx.Err) + assert.Nil(t, ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") return nil @@ -158,13 +191,16 @@ func Test_ServerUpdate(t *testing.T) { return nil }, Cmd: `scw instance server update server-id={{ .Server.ID }} placement-group-id={{ .PlacementGroup.PlacementGroup.ID }}`, - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - require.NoError(t, ctx.Err) - assert.Equal(t, - ctx.Meta["PlacementGroup"].(*instance.CreatePlacementGroupResponse).PlacementGroup.ID, - ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup.ID, - ) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + require.NoError(t, ctx.Err) + assert.Equal(t, + ctx.Meta["PlacementGroup"].(*instance.CreatePlacementGroupResponse).PlacementGroup.ID, + ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup.ID, + ) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") ctx.ExecuteCmd("scw instance placement-group delete placement-group-id={{ .PlacementGroup.PlacementGroup.ID }}") @@ -214,10 +250,13 @@ func Test_ServerUpdate(t *testing.T) { return nil }, Cmd: `scw instance server update server-id={{ .Server.ID }} placement-group-id=none`, - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - require.NoError(t, ctx.Err) - assert.Nil(t, ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + require.NoError(t, ctx.Err) + assert.Nil(t, ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") ctx.ExecuteCmd("scw instance placement-group delete placement-group-id={{ .PlacementGroup.PlacementGroup.ID }}") @@ -233,13 +272,16 @@ func Test_ServerUpdate(t *testing.T) { return nil }, Cmd: `scw instance server update server-id={{ .Server.ID }} placement-group-id={{ .PlacementGroup.PlacementGroup.ID }}`, - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - require.NoError(t, ctx.Err) - assert.Equal(t, - ctx.Meta["PlacementGroup"].(*instance.CreatePlacementGroupResponse).PlacementGroup.ID, - ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup.ID, - ) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + require.NoError(t, ctx.Err) + assert.Equal(t, + ctx.Meta["PlacementGroup"].(*instance.CreatePlacementGroupResponse).PlacementGroup.ID, + ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup.ID, + ) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") ctx.ExecuteCmd("scw instance placement-group delete placement-group-id={{ .PlacementGroup.PlacementGroup.ID }}") @@ -256,13 +298,16 @@ func Test_ServerUpdate(t *testing.T) { return nil }, Cmd: `scw instance server update server-id={{ .Server.ID }} placement-group-id={{ .PlacementGroup2.PlacementGroup.ID }}`, - Check: func(t *testing.T, ctx *core.CheckFuncCtx) { - assert.NoError(t, ctx.Err) - assert.Equal(t, - ctx.Meta["PlacementGroup2"].(*instance.CreatePlacementGroupResponse).PlacementGroup.ID, - ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup.ID, - ) - }, + Check: core.TestCheckCombine( + func(t *testing.T, ctx *core.CheckFuncCtx) { + assert.NoError(t, ctx.Err) + assert.Equal(t, + ctx.Meta["PlacementGroup2"].(*instance.CreatePlacementGroupResponse).PlacementGroup.ID, + ctx.Result.(*instance.UpdateServerResponse).Server.PlacementGroup.ID, + ) + }, + core.TestCheckExitCode(0), + ), AfterFunc: func(ctx *core.AfterFuncCtx) error { ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true") ctx.ExecuteCmd("scw instance placement-group delete placement-group-id={{ .PlacementGroup.PlacementGroup.ID }}")