| package repo_manager |
| |
| import ( |
| "testing" |
| |
| "github.com/stretchr/testify/require" |
| "go.skia.org/infra/go/testutils/unittest" |
| ) |
| |
| func validCommonBaseConfig() *CommonRepoManagerConfig { |
| return &CommonRepoManagerConfig{ |
| ChildBranch: "childBranch", |
| ChildPath: "childPath", |
| ParentBranch: "parentBranch", |
| } |
| } |
| |
| func TestCommonConfigValidation(t *testing.T) { |
| unittest.SmallTest(t) |
| |
| require.NoError(t, validCommonBaseConfig().Validate()) |
| cfg := validCommonBaseConfig() |
| cfg.PreUploadSteps = []string{"TrainInfra"} |
| require.NoError(t, cfg.Validate()) |
| |
| // Helper function: create a valid base config, allow the caller to |
| // mutate it, then assert that validation fails with the given message. |
| testErr := func(fn func(c *CommonRepoManagerConfig), err string) { |
| c := validCommonBaseConfig() |
| fn(c) |
| require.EqualError(t, c.Validate(), err) |
| } |
| |
| // Test cases. |
| |
| testErr(func(c *CommonRepoManagerConfig) { |
| c.ChildBranch = "" |
| }, "ChildBranch is required.") |
| |
| testErr(func(c *CommonRepoManagerConfig) { |
| c.ChildPath = "" |
| }, "ChildPath is required.") |
| |
| testErr(func(c *CommonRepoManagerConfig) { |
| c.ParentBranch = "" |
| }, "ParentBranch is required.") |
| |
| testErr(func(c *CommonRepoManagerConfig) { |
| c.PreUploadSteps = []string{ |
| "bogus", |
| } |
| }, "No such pre-upload step: bogus") |
| } |
| |
| func TestDepotToolsConfigValidation(t *testing.T) { |
| unittest.SmallTest(t) |
| |
| validBaseConfig := func() *DepotToolsRepoManagerConfig { |
| return &DepotToolsRepoManagerConfig{ |
| CommonRepoManagerConfig: *validCommonBaseConfig(), |
| ParentRepo: "parentRepo", |
| } |
| } |
| |
| require.NoError(t, validBaseConfig().Validate()) |
| cfg := validBaseConfig() |
| cfg.GClientSpec = "dummy" |
| require.NoError(t, cfg.Validate()) |
| |
| cfg.ParentRepo = "" |
| require.EqualError(t, cfg.Validate(), "ParentRepo is required.") |
| |
| // Verify that the CommonRepoManagerConfig gets validated. |
| cfg = &DepotToolsRepoManagerConfig{ |
| ParentRepo: "parentRepo", |
| } |
| require.Error(t, cfg.Validate()) |
| } |