diff --git a/.github/workflows/test-empty-setting.yml b/.github/workflows/test-empty-setting.yml new file mode 100644 index 0000000..4b50842 --- /dev/null +++ b/.github/workflows/test-empty-setting.yml @@ -0,0 +1,48 @@ +name: Test non-existent setting +on: + # # Uncomment when test added first time to register workflow and comment it back after workflow would be registered + # # + # # Added pull_request to register workflow from the PR. + # # Read more https://stackoverflow.com/questions/63362126/github-actions-how-to-run-a-workflow-created-on-a-non-master-branch-from-the-wo + # pull_request: {} + workflow_dispatch: {} + +jobs: + test: + runs-on: ubuntu-latest + continue-on-error: true + outputs: + result: ${{ steps.current.outputs.value }} + outcome: ${{ steps.current.outcome }} + steps: + - name: Setup terraform + uses: hashicorp/setup-terraform@v2 + - name: Setup atmos + uses: cloudposse/github-action-setup-atmos@1.0.2 + with: + install-wrapper: false + - name: Checkout + uses: actions/checkout@v3 + + - uses: ./ + id: current + with: + component: foo + stack: core-ue1-dev + settings-path: settings.level5 + + assert: + runs-on: ubuntu-latest + if: always() + needs: [test] + steps: + - uses: nick-fields/assert-action@v1 + with: + expected: success + actual: ${{ needs.test.outputs.outcome }} + + - uses: nick-fields/assert-action@v1 + with: + expected: "" + actual: ${{ needs.test.outputs.result }} + diff --git a/.github/workflows/test-negative.yml b/.github/workflows/test-negative.yml new file mode 100644 index 0000000..ba0c23f --- /dev/null +++ b/.github/workflows/test-negative.yml @@ -0,0 +1,48 @@ +name: Test non-existent component stack +on: + # # Uncomment when test added first time to register workflow and comment it back after workflow would be registered + # # + # # Added pull_request to register workflow from the PR. + # # Read more https://stackoverflow.com/questions/63362126/github-actions-how-to-run-a-workflow-created-on-a-non-master-branch-from-the-wo + # pull_request: {} + workflow_dispatch: {} + +jobs: + test: + runs-on: ubuntu-latest + continue-on-error: true + outputs: + result: ${{ steps.current.outputs.value }} + outcome: ${{ steps.current.outcome }} + steps: + - name: Setup terraform + uses: hashicorp/setup-terraform@v2 + - name: Setup atmos + uses: cloudposse/github-action-setup-atmos@1.0.2 + with: + install-wrapper: false + - name: Checkout + uses: actions/checkout@v3 + + - uses: ./ + id: current + with: + component: bar + stack: core-ue1-dev + settings-path: settings.level1.level2.level3.secrets-arn + + assert: + runs-on: ubuntu-latest + if: always() + needs: [test] + steps: + - uses: nick-fields/assert-action@v1 + with: + expected: failure + actual: ${{ needs.test.outputs.outcome }} + + - uses: nick-fields/assert-action@v1 + with: + expected: "" + actual: ${{ needs.test.outputs.result }} + diff --git a/.github/workflows/test-wrong-atmos-config.yml b/.github/workflows/test-wrong-atmos-config.yml new file mode 100644 index 0000000..5f05e15 --- /dev/null +++ b/.github/workflows/test-wrong-atmos-config.yml @@ -0,0 +1,48 @@ +name: Test wrong atmos config +on: + # # Uncomment when test added first time to register workflow and comment it back after workflow would be registered + # # + # # Added pull_request to register workflow from the PR. + # # Read more https://stackoverflow.com/questions/63362126/github-actions-how-to-run-a-workflow-created-on-a-non-master-branch-from-the-wo + # pull_request: {} + workflow_dispatch: {} + +env: + ATMOS_CLI_CONFIG_PATH: /tmp + ATMOS_BASE_PATH: /tmp + +jobs: + test: + runs-on: ubuntu-latest + continue-on-error: true + outputs: + result: ${{ steps.current.outputs.value }} + outcome: ${{ steps.current.outcome }} + steps: + - name: Setup terraform + uses: hashicorp/setup-terraform@v2 + - name: Setup atmos + uses: cloudposse/github-action-setup-atmos@1.0.2 + with: + install-wrapper: false + + - name: Checkout + uses: actions/checkout@v3 + + - uses: ./ + id: current + with: + component: foo + stack: core-ue1-dev + settings-path: settings.level1.level2.level3.secrets-arn + + assert: + runs-on: ubuntu-latest + if: always() + needs: [test] + steps: + - uses: nick-fields/assert-action@v1 + with: + expected: failure + actual: ${{ needs.test.outputs.outcome }} + diff --git a/action.yml b/action.yml index 97b35c4..fe2f8fb 100644 --- a/action.yml +++ b/action.yml @@ -31,6 +31,6 @@ runs: ${{ inputs.component }} \ -s ${{ inputs.stack }} \ --format json \ - --file "$OUTPUT_FILE" || echo '{}' > "$OUTPUT_FILE" - value=$(jq -rc --arg key ${{ inputs.settings-path }} '. | getpath($key | split("."))' "$OUTPUT_FILE") + --file "$OUTPUT_FILE" + value=$(jq -rc --arg key ${{ inputs.settings-path }} '. | getpath($key | split(".")) | if . == null then "" else . end' "$OUTPUT_FILE") echo "value=$value" >> $GITHUB_OUTPUT