From 032e5ae4cc34122e47c51d14b1c9a17c9651eecf Mon Sep 17 00:00:00 2001 From: Snider Date: Thu, 29 Jan 2026 03:28:05 +0000 Subject: [PATCH] test(release): add SDK release integration tests Add additional test coverage for SDK release functionality: - TestRunSDK_Good_WithDiffEnabledNoFailOnBreaking - TestRunSDK_Good_MultipleLanguages - TestRunSDK_Good_WithPackageConfig - TestToSDKConfig_Good_EmptyPackageConfig - TestToSDKConfig_Good_DiffDisabled Co-Authored-By: Claude Opus 4.5 --- pkg/release/sdk_test.go | 95 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/pkg/release/sdk_test.go b/pkg/release/sdk_test.go index 9d757f6..f800beb 100644 --- a/pkg/release/sdk_test.go +++ b/pkg/release/sdk_test.go @@ -132,3 +132,98 @@ func TestToSDKConfig_Good_NilInput(t *testing.T) { result := toSDKConfig(nil) assert.Nil(t, result) } + +func TestRunSDK_Good_WithDiffEnabledNoFailOnBreaking(t *testing.T) { + // Tests diff enabled but FailOnBreaking=false (should warn but not fail) + cfg := &Config{ + SDK: &SDKConfig{ + Languages: []string{"typescript"}, + Output: "sdk", + Diff: SDKDiffConfig{ + Enabled: true, + FailOnBreaking: false, + }, + }, + } + cfg.projectDir = "/tmp" + cfg.version = "v1.0.0" + + // Dry run should succeed even without git repo (diff check fails gracefully) + result, err := RunSDK(context.Background(), cfg, true) + require.NoError(t, err) + assert.Equal(t, "v1.0.0", result.Version) + assert.Contains(t, result.Languages, "typescript") +} + +func TestRunSDK_Good_MultipleLanguages(t *testing.T) { + // Tests multiple language support + cfg := &Config{ + SDK: &SDKConfig{ + Languages: []string{"typescript", "python", "go", "java"}, + Output: "multi-sdk", + }, + } + cfg.projectDir = "/tmp" + cfg.version = "v3.0.0" + + result, err := RunSDK(context.Background(), cfg, true) + require.NoError(t, err) + + assert.Equal(t, "v3.0.0", result.Version) + assert.Len(t, result.Languages, 4) + assert.Equal(t, "multi-sdk", result.Output) +} + +func TestRunSDK_Good_WithPackageConfig(t *testing.T) { + // Tests that package config is properly handled + cfg := &Config{ + SDK: &SDKConfig{ + Spec: "openapi.yaml", + Languages: []string{"typescript"}, + Output: "sdk", + Package: SDKPackageConfig{ + Name: "my-custom-sdk", + Version: "v2.5.0", + }, + }, + } + cfg.projectDir = "/tmp" + cfg.version = "v1.0.0" + + result, err := RunSDK(context.Background(), cfg, true) + require.NoError(t, err) + assert.Equal(t, "v1.0.0", result.Version) +} + +func TestToSDKConfig_Good_EmptyPackageConfig(t *testing.T) { + // Tests conversion with empty package config + sdkCfg := &SDKConfig{ + Languages: []string{"go"}, + Output: "sdk", + // Package is empty struct + } + + result := toSDKConfig(sdkCfg) + + assert.Equal(t, []string{"go"}, result.Languages) + assert.Equal(t, "sdk", result.Output) + assert.Empty(t, result.Package.Name) + assert.Empty(t, result.Package.Version) +} + +func TestToSDKConfig_Good_DiffDisabled(t *testing.T) { + // Tests conversion with diff disabled + sdkCfg := &SDKConfig{ + Languages: []string{"typescript"}, + Output: "sdk", + Diff: SDKDiffConfig{ + Enabled: false, + FailOnBreaking: false, + }, + } + + result := toSDKConfig(sdkCfg) + + assert.False(t, result.Diff.Enabled) + assert.False(t, result.Diff.FailOnBreaking) +}