From 149cc19908948b291a69e6d687b144387f62c7c9 Mon Sep 17 00:00:00 2001 From: ChristopherHX Date: Wed, 21 Jul 2021 15:50:43 +0200 Subject: [PATCH] Fix defaults (composite) (#753) * Fix defaults (composite) * uses-composite: rely on defaults to pass * Add test_input_required back, needs more tests * Update Tests to test defaults carefully --- pkg/runner/expression.go | 2 +- pkg/runner/step_context.go | 1 + .../composite_action/action.yml | 33 +++++++++++++++++++ pkg/runner/testdata/uses-composite/push.yml | 15 +++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/pkg/runner/expression.go b/pkg/runner/expression.go index a670d7d..487c68c 100644 --- a/pkg/runner/expression.go +++ b/pkg/runner/expression.go @@ -403,7 +403,7 @@ func (sc *StepContext) vmInputs() func(*otto.Otto) { // Set Defaults if sc.Action != nil { for k, input := range sc.Action.Inputs { - inputs[k] = input.Default + inputs[k] = sc.RunContext.NewExpressionEvaluator().Interpolate(input.Default) } } diff --git a/pkg/runner/step_context.go b/pkg/runner/step_context.go index a6ee62f..98c2e7c 100644 --- a/pkg/runner/step_context.go +++ b/pkg/runner/step_context.go @@ -591,6 +591,7 @@ func (sc *StepContext) execAsComposite(ctx context.Context, step *model.Step, _ RunContext: rcClone, Step: step, Env: mergeMaps(sc.Env, env), + Action: action, } // Required to set github.action_path diff --git a/pkg/runner/testdata/uses-composite/composite_action/action.yml b/pkg/runner/testdata/uses-composite/composite_action/action.yml index 528efce..f47f76f 100644 --- a/pkg/runner/testdata/uses-composite/composite_action/action.yml +++ b/pkg/runner/testdata/uses-composite/composite_action/action.yml @@ -10,6 +10,18 @@ inputs: description: "optional defaulted input" required: false default: "test_input_optional_value" + test_input_optional_with_default_overriden: + description: "optional defaulted input" + required: false + default: "test_input_optional_value" + test_input_required_with_default: + description: "Required with default, due to an old bug of github actions this is allowed" + required: true + default: "test_input_optional_value" + test_input_required_with_default_overriden: + description: "Required with default, due to an old bug of github actions this is allowed" + required: true + default: "test_input_optional_value" outputs: test_output: @@ -25,6 +37,9 @@ runs: echo "---" echo "test_input_required=${{ inputs.test_input_required }}" echo "test_input_optional=${{ inputs.test_input_optional }}" + echo "test_input_optional_with_default_overriden=${{ inputs.test_input_optional_with_default_overriden }}" + echo "test_input_required_with_default=${{ inputs.test_input_required_with_default }}" + echo "test_input_required_with_default_overriden=${{ inputs.test_input_required_with_default_overriden }}" echo "---" shell: bash @@ -41,6 +56,24 @@ runs: fi shell: bash + - run: | + if [ "${{ inputs.test_input_optional_with_default_overriden }}" != "test_input_optional_with_default_overriden" ]; then + exit 1 + fi + shell: bash + + - run: | + if [ "${{ inputs.test_input_required_with_default }}" != "test_input_optional_value" ]; then + exit 1 + fi + shell: bash + + - run: | + if [ "${{ inputs.test_input_required_with_default_overriden }}" != "test_input_required_with_default_overriden" ]; then + exit 1 + fi + shell: bash + - run: | if [ -z "$GITHUB_ACTION_PATH" ]; then exit 1 diff --git a/pkg/runner/testdata/uses-composite/push.yml b/pkg/runner/testdata/uses-composite/push.yml index f255a5e..9451890 100755 --- a/pkg/runner/testdata/uses-composite/push.yml +++ b/pkg/runner/testdata/uses-composite/push.yml @@ -10,9 +10,24 @@ jobs: with: test_input_required: 'test_input_required_value' test_input_optional: 'test_input_optional_value' + test_input_optional_with_default_overriden: 'test_input_optional_with_default_overriden' + test_input_required_with_default: 'test_input_optional_value' + test_input_required_with_default_overriden: 'test_input_required_with_default_overriden' - if: steps.composite.outputs.test_output != "test_output_value" run: | echo "steps.composite.outputs.test_output=${{ steps.composite.outputs.test_output }}" exit 1 + # Now test again with default values + - uses: ./uses-composite/composite_action + id: composite2 + with: + test_input_required: 'test_input_required_value' + test_input_optional_with_default_overriden: 'test_input_optional_with_default_overriden' + test_input_required_with_default_overriden: 'test_input_required_with_default_overriden' + + - if: steps.composite2.outputs.test_output != "test_output_value" + run: | + echo "steps.composite.outputs.test_output=${{ steps.composite.outputs.test_output }}" + exit 1