From 41daadc575aca1b072c18656bb57c73f38313267 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Thu, 5 Mar 2026 15:36:24 +0100 Subject: [PATCH] fix(tests): guard against nil RunScript result in integration tests When RunScript returns (nil, error) due to gRPC failures, tests that ignore the error and immediately access runResult fields panic with a nil pointer dereference. Add require.NotNil guards at 12 call sites across 10 test files to produce clean test failures instead of panics. Co-Authored-By: Claude Opus 4.6 --- .../startosis_add_service_with_ready_conditions_test.go | 1 + .../startosis_add_services_with_ready_conditions_test.go | 1 + .../startosis_ports_wait_test/startosis_ports_wait_test.go | 2 ++ .../starlark_validation_failure_invalid_port_id_request_test.go | 1 + .../starlark_validation_failure_invalid_port_id_wait_test.go | 1 + ...lark_validation_failure_invalid_service_name_request_test.go | 1 + .../starlark_validation_failure_invalid_service_wait_test.go | 1 + .../startosis_assert_fail_test.go | 1 + .../startosis_timeout_wait_test.go | 1 + .../startosis_run_sh_task_test/run_task_sh_task_test.go | 2 ++ 10 files changed, 12 insertions(+) diff --git a/internal_testsuites/golang/testsuite/startosis_add_service_test/startosis_add_service_with_ready_conditions_test.go b/internal_testsuites/golang/testsuite/startosis_add_service_test/startosis_add_service_with_ready_conditions_test.go index d2462c8f3d..4c4abf6877 100644 --- a/internal_testsuites/golang/testsuite/startosis_add_service_test/startosis_add_service_with_ready_conditions_test.go +++ b/internal_testsuites/golang/testsuite/startosis_add_service_test/startosis_add_service_with_ready_conditions_test.go @@ -55,6 +55,7 @@ func (suite *StartosisAddServiceTestSuite) TestStartosis_AddServiceWithReadyCond runResult, _ := suite.RunScript(ctx, script) t := suite.T() + require.NotNil(t, runResult, "RunScript returned nil result") expectedLastAssertionErrorStr := fmt.Sprintf("Verification failed '%v' '==' '%v'", okStatusCode, serverErrorStatusCode) require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") diff --git a/internal_testsuites/golang/testsuite/startosis_add_service_test/startosis_add_services_with_ready_conditions_test.go b/internal_testsuites/golang/testsuite/startosis_add_service_test/startosis_add_services_with_ready_conditions_test.go index efdd4ea3ac..5272a1060f 100644 --- a/internal_testsuites/golang/testsuite/startosis_add_service_test/startosis_add_services_with_ready_conditions_test.go +++ b/internal_testsuites/golang/testsuite/startosis_add_service_test/startosis_add_services_with_ready_conditions_test.go @@ -65,6 +65,7 @@ func (suite *StartosisAddServiceTestSuite) TestStartosis_AddServicesWithReadyCon runResult, _ := suite.RunScript(ctx, script) t := suite.T() + require.NotNil(t, runResult, "RunScript returned nil result") require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") require.Empty(t, runResult.ValidationErrors, "Unexpected validation error") diff --git a/internal_testsuites/golang/testsuite/startosis_ports_wait_test/startosis_ports_wait_test.go b/internal_testsuites/golang/testsuite/startosis_ports_wait_test/startosis_ports_wait_test.go index 5678100e42..c018cbe65d 100644 --- a/internal_testsuites/golang/testsuite/startosis_ports_wait_test/startosis_ports_wait_test.go +++ b/internal_testsuites/golang/testsuite/startosis_ports_wait_test/startosis_ports_wait_test.go @@ -58,6 +58,7 @@ func (suite *StartosisPortsWaitTestSuite) TestStartosis_AssertFailBecausePortIsN runResult, _ := suite.RunScript(ctx, assertFailScript) t := suite.T() + require.NotNil(t, runResult, "RunScript returned nil result") require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") require.Empty(t, runResult.ValidationErrors, "Unexpected validation error") @@ -69,6 +70,7 @@ func (suite *StartosisPortsWaitTestSuite) TestStartosis_AssertFailBecauseEmptySt runResult, _ := suite.RunScript(ctx, assertFailScript2) t := suite.T() + require.NotNil(t, runResult, "RunScript returned nil result") require.NotNil(t, runResult.InterpretationError, "Expected interpretation error coming from wait validation") require.Empty(t, runResult.ValidationErrors, "Unexpected validation error") diff --git a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_port_id_request_test.go b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_port_id_request_test.go index d7b17a25a4..56b6d80a25 100644 --- a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_port_id_request_test.go +++ b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_port_id_request_test.go @@ -32,6 +32,7 @@ func (suite *StartosisRequestWaitAssertTestSuite) TestStarlark_InvalidPortIdRequ runResult, _ := suite.RunScript(ctx, requestInvalidPortIDFailScript) t := suite.T() + require.NotNil(t, runResult, "RunScript returned nil result") require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") require.NotEmpty(t, runResult.ValidationErrors, "Expected validation errors") require.Len(t, runResult.ValidationErrors, 1) diff --git a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_port_id_wait_test.go b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_port_id_wait_test.go index 392fe600b8..e103d9a4bc 100644 --- a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_port_id_wait_test.go +++ b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_port_id_wait_test.go @@ -32,6 +32,7 @@ func (suite *StartosisRequestWaitAssertTestSuite) TestStarlark_InvalidPortIdWait runResult, _ := suite.RunScript(ctx, waitInvalidPortIDFailScript) t := suite.T() + require.NotNil(t, runResult, "RunScript returned nil result") require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") require.NotEmpty(t, runResult.ValidationErrors, "Expected validation error") require.Len(t, runResult.ValidationErrors, 1) diff --git a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_service_name_request_test.go b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_service_name_request_test.go index 048002b2a4..486e3c9c82 100644 --- a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_service_name_request_test.go +++ b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_service_name_request_test.go @@ -32,6 +32,7 @@ func (suite *StartosisRequestWaitAssertTestSuite) TestStarlark_InvalidServiceReq runResult, _ := suite.RunScript(ctx, requestInvalidServiceNameScript) t := suite.T() + require.NotNil(t, runResult, "RunScript returned nil result") require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") require.NotEmpty(t, runResult.ValidationErrors, "Expected validation error") require.Len(t, runResult.ValidationErrors, 1) diff --git a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_service_wait_test.go b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_service_wait_test.go index cdd77c9850..bad12a92db 100644 --- a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_service_wait_test.go +++ b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/starlark_validation_failure_invalid_service_wait_test.go @@ -31,6 +31,7 @@ func (suite *StartosisRequestWaitAssertTestSuite) TestStarlark_InvalidServiceWai ctx := context.Background() t := suite.T() runResult, _ := suite.RunScript(ctx, waitInvalidServiceTestScript) + require.NotNil(t, runResult, "RunScript returned nil result") require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") require.NotEmpty(t, runResult.ValidationErrors, "Expected validation error") diff --git a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/startosis_assert_fail_test.go b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/startosis_assert_fail_test.go index 5f35b383f2..4d4d0c9fda 100644 --- a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/startosis_assert_fail_test.go +++ b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/startosis_assert_fail_test.go @@ -35,6 +35,7 @@ func (suite *StartosisRequestWaitAssertTestSuite) TestStartosis_AssertFail() { ctx := context.Background() t := suite.T() runResult, _ := suite.RunScript(ctx, assertFailScript) + require.NotNil(t, runResult, "RunScript returned nil result") require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") require.Empty(t, runResult.ValidationErrors, "Unexpected validation error") diff --git a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/startosis_timeout_wait_test.go b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/startosis_timeout_wait_test.go index 42d164c408..f9acee7a38 100644 --- a/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/startosis_timeout_wait_test.go +++ b/internal_testsuites/golang/testsuite/startosis_request_wait_assert_test/startosis_timeout_wait_test.go @@ -31,6 +31,7 @@ func (suite *StartosisRequestWaitAssertTestSuite) TestStartosis_TimeoutWait() { ctx := context.Background() t := suite.T() runResult, _ := suite.RunScript(ctx, timeoutWaitStartosisScript) + require.NotNil(t, runResult, "RunScript returned nil result") require.Nil(t, runResult.InterpretationError, "Unexpected interpretation error") require.Empty(t, runResult.ValidationErrors, "Unexpected validation error") diff --git a/internal_testsuites/golang/testsuite/startosis_run_sh_task_test/run_task_sh_task_test.go b/internal_testsuites/golang/testsuite/startosis_run_sh_task_test/run_task_sh_task_test.go index a6c354ec4e..217cddd9e8 100644 --- a/internal_testsuites/golang/testsuite/startosis_run_sh_task_test/run_task_sh_task_test.go +++ b/internal_testsuites/golang/testsuite/startosis_run_sh_task_test/run_task_sh_task_test.go @@ -60,6 +60,7 @@ func TestStarlark_RunshTaskFileArtifact(t *testing.T) { func TestStarlark_RunshTimesoutSuccess(t *testing.T) { ctx := context.Background() runResult, _ := test_helpers.SetupSimpleEnclaveAndRunScript(t, ctx, runshTest, runshStarlarkWithTimeout) + require.NotNil(t, runResult, "RunScript returned nil result") expectedErrorMessage := "The exec request timed out after 5 seconds" require.NotNil(t, runResult.ExecutionError) require.Contains(t, runResult.ExecutionError.GetErrorMessage(), expectedErrorMessage) @@ -68,6 +69,7 @@ func TestStarlark_RunshTimesoutSuccess(t *testing.T) { func TestStarlark_RunshAcceptableCodes(t *testing.T) { ctx := context.Background() runResult, _ := test_helpers.SetupSimpleEnclaveAndRunScript(t, ctx, runshTest, runStarlarkWithAcceptableCodes) + require.NotNil(t, runResult, "RunScript returned nil result") expectedOutput := "Command returned with exit code '0' with no output\nCommand returned with exit code '1' with no output\nCommand returned with exit code '42' and the following output:\n--------------------\nHi\n\n--------------------\n" require.Nil(t, runResult.ExecutionError) require.Equal(t, expectedOutput, string(runResult.RunOutput))