diff --git a/workflow/validate/validate.go b/workflow/validate/validate.go index 8dd841798628..4809978dd2f3 100644 --- a/workflow/validate/validate.go +++ b/workflow/validate/validate.go @@ -963,12 +963,7 @@ func (ctx *templateValidationCtx) validateSteps(scope map[string]interface{}, tm if err != nil { return err } - var args wfv1.ArgumentsProvider - args = &FakeArguments{} - if step.TemplateRef != nil { - args = &step.Arguments - } - resolvedTmpl, err := ctx.validateTemplateHolder(&step, tmplCtx, args, workflowTemplateValidation) + resolvedTmpl, err := ctx.validateTemplateHolder(&step, tmplCtx, &FakeArguments{}, workflowTemplateValidation) if err != nil { return errors.Errorf(errors.CodeBadRequest, "templates.%s.steps[%d].%s %s", tmpl.Name, i, step.Name, err.Error()) } @@ -1361,13 +1356,7 @@ func (ctx *templateValidationCtx) validateDAG(scope map[string]interface{}, tmpl return errors.Errorf(errors.CodeBadRequest, "templates.%s cannot use 'continueOn' when using 'depends'. Instead use 'dep-task.Failed'/'dep-task.Errored'", tmpl.Name) } - var args wfv1.ArgumentsProvider - args = &FakeArguments{} - if task.TemplateRef != nil { - args = &task.Arguments - } - - resolvedTmpl, err := ctx.validateTemplateHolder(&task, tmplCtx, args, workflowTemplateValidation) + resolvedTmpl, err := ctx.validateTemplateHolder(&task, tmplCtx, &FakeArguments{}, workflowTemplateValidation) if err != nil { return errors.Errorf(errors.CodeBadRequest, "templates.%s.tasks.%s %s", tmpl.Name, task.Name, err.Error()) diff --git a/workflow/validate/validate_test.go b/workflow/validate/validate_test.go index 331ee6c8cab9..04ccdcf1d773 100644 --- a/workflow/validate/validate_test.go +++ b/workflow/validate/validate_test.go @@ -3354,72 +3354,3 @@ func TestShouldCheckValidationToSpacedParameters(t *testing.T) { // Do not allow leading or trailing spaces in parameters require.ErrorContains(t, err, "failed to resolve {{ workflow.thisdoesnotexist }}") } - -var dynamicWorkflowTemplateARefB = ` -apiVersion: argoproj.io/v1alpha1 -kind: WorkflowTemplate -metadata: - name: workflow-template-a -spec: - templates: - - name: template-a - inputs: - parameters: - - name: message - steps: - - - name: step-a - templateRef: - name: workflow-template-b - template: "{{ inputs.parameters.message }}" -` - -var dynamicWorkflowTemplateRefB = ` -apiVersion: argoproj.io/v1alpha1 -kind: WorkflowTemplate -metadata: - name: workflow-template-b -spec: - templates: - - name: template-b - container: - image: docker/whalesay - command: [cowsay] - args: ["hello from template"] -` - -var dynamicTemplateRefWorkflow = ` -apiVersion: argoproj.io/v1alpha1 -kind: Workflow -metadata: - generateName: dynamic-workflow- -spec: - entrypoint: whalesay - templates: - - name: whalesay - steps: - - - name: whalesay - templateRef: - name: workflow-template-a - template: template-a - arguments: - parameters: - - name: message - value: "template-b" -` - -func TestDynamicWorkflowTemplateRef(t *testing.T) { - wf := wfv1.MustUnmarshalWorkflow(dynamicTemplateRefWorkflow) - wftmplA := wfv1.MustUnmarshalWorkflowTemplate(dynamicWorkflowTemplateARefB) - wftmplB := wfv1.MustUnmarshalWorkflowTemplate(dynamicWorkflowTemplateRefB) - - err := createWorkflowTemplate(wftmplA) - require.NoError(t, err) - err = createWorkflowTemplate(wftmplB) - require.NoError(t, err) - - err = ValidateWorkflow(wftmplGetter, cwftmplGetter, wf, nil, ValidateOpts{}) - require.NoError(t, err) - - _ = deleteWorkflowTemplate(wftmplA.Name) - _ = deleteWorkflowTemplate(wftmplB.Name) -}