func (s *ImportSuite) TestUploadBinariesConfigValidate(c *gc.C) { type T migration.UploadBinariesConfig // alias for brevity check := func(modify func(*T), missing string) { config := T{ CharmDownloader: struct{ migration.CharmDownloader }{}, CharmUploader: struct{ migration.CharmUploader }{}, ToolsDownloader: struct{ migration.ToolsDownloader }{}, ToolsUploader: struct{ migration.ToolsUploader }{}, } modify(&config) realConfig := migration.UploadBinariesConfig(config) c.Check(realConfig.Validate(), gc.ErrorMatches, fmt.Sprintf("missing %s not valid", missing)) } check(func(c *T) { c.CharmDownloader = nil }, "CharmDownloader") check(func(c *T) { c.CharmUploader = nil }, "CharmUploader") check(func(c *T) { c.ToolsDownloader = nil }, "ToolsDownloader") check(func(c *T) { c.ToolsUploader = nil }, "ToolsUploader") }