// testExecution sets up boiler plate mocked objects then delegates to a more // specific tester, then asserts general expectations on the mocked objects. // It is the responsibility of the inner tester to set up expectations // and assert specific result conditions. func testExecution(t *testing.T, commandtester CommandTester) { // create mocked objects mockCancelFlag := new(task.MockCancelFlag) mockExecuter := new(executers.MockCommandExecuter) mockS3Uploader := new(pluginutil.MockDefaultPlugin) // create plugin p := new(Plugin) p.StdoutFileName = "stdout" p.StderrFileName = "stderr" p.MaxStdoutLength = 1000 p.MaxStderrLength = 1000 p.OutputTruncatedSuffix = "-more-" p.UploadToS3Sync = true p.ExecuteCommand = pluginutil.CommandExecuter(mockExecuter.Execute) p.ExecuteUploadOutputToS3Bucket = pluginutil.UploadOutputToS3BucketExecuter(mockS3Uploader.UploadOutputToS3Bucket) // run inner command tester commandtester(p, mockCancelFlag, mockExecuter, mockS3Uploader) // assert that the expectations were met mockExecuter.AssertExpectations(t) mockCancelFlag.AssertExpectations(t) mockS3Uploader.AssertExpectations(t) }
// NewPlugin returns a new instance of the plugin. func NewPlugin(pluginConfig pluginutil.PluginConfig) (*Plugin, error) { var plugin Plugin plugin.MaxStdoutLength = pluginConfig.MaxStdoutLength plugin.MaxStderrLength = pluginConfig.MaxStderrLength plugin.StdoutFileName = pluginConfig.StdoutFileName plugin.StderrFileName = pluginConfig.StderrFileName plugin.OutputTruncatedSuffix = pluginConfig.OutputTruncatedSuffix plugin.Uploader = pluginutil.GetS3Config() plugin.ExecuteUploadOutputToS3Bucket = pluginutil.UploadOutputToS3BucketExecuter(plugin.UploadOutputToS3Bucket) exec := executers.ShellCommandExecuter{} plugin.ExecuteCommand = pluginutil.CommandExecuter(exec.Execute) return &plugin, nil }