diff --git a/.github/workflows/test-expressions.yml b/.github/workflows/test-expressions.yml index fe26f9e..5e5aa60 100644 --- a/.github/workflows/test-expressions.yml +++ b/.github/workflows/test-expressions.yml @@ -3,12 +3,12 @@ name: "Test how expressions are handled on Github" on: push env: - KEYWITHNOTHING: valuewithnothing - KEY-WITH-HYPHENS: value-with-hyphens - KEY_WITH_UNDERSCORES: value_with_underscores - SOMETHING_TRUE: true - SOMETHING_FALSE: false ACT: true + KEY-WITH-HYPHENS: value-with-hyphens + KEYWITHNOTHING: valuewithnothing + KEY_WITH_UNDERSCORES: value_with_underscores + SOMETHING_FALSE: false + SOMETHING_TRUE: true jobs: @@ -16,68 +16,74 @@ jobs: runs-on: ubuntu-latest steps: - - name: €{{ 1 }} to €{{ 2 }} -> ${{1}} to ${{2}} should be equal to 1 to 2 - run: echo "Done " + - name: €{{ 1 }} to €{{ 2 }} -> ${{1}} to ${{2}} should be equal to 1 to 2 + run: echo "Done " - - name: €{{ env.KEYWITHNOTHING }} -> ${{ env.KEYWITHNOTHING }} should be equal to valuewithnothing - run: echo "Done " + - name: €{{ env.KEYWITHNOTHING }} -> ${{ env.KEYWITHNOTHING }} should be equal to valuewithnothing + run: echo "Done " - - name: €{{ env.KEY-WITH-HYPHENS }} -> ${{ env.KEY-WITH-HYPHENS }} should be equal to value-with-hyphens - run: echo "Done " + - name: €{{ env.KEY-WITH-HYPHENS }} -> ${{ env.KEY-WITH-HYPHENS }} should be equal to value-with-hyphens + run: echo "Done " - - name: €{{ env.KEY_WITH_UNDERSCORES }} -> ${{ env.KEY_WITH_UNDERSCORES }} should be equal to value_with_underscores - run: echo "Done " + - name: €{{ env.KEY_WITH_UNDERSCORES }} -> ${{ env.KEY_WITH_UNDERSCORES }} should be equal to value_with_underscores + run: echo "Done " - - name: €{{ env.UNKNOWN }} -> ${{ env.UNKNOWN }} should be equal to - run: echo "Done " + - name: €{{ secrets.CASE_INSENSITIVE_SECRET }} -> ${{ secrets.CASE_INSENSITIVE_SECRET }} should be equal to value + run: echo "Done " - - name: €{{ env.SOMETHING_TRUE }} -> ${{ env.SOMETHING_TRUE }} should be equal to true - run: echo "Done " + - name: €{{ secrets.case_insensitive_secret }} -> ${{ secrets.case_insensitive_secret }} should be equal to value + run: echo "Done " - - name: €{{ env.SOMETHING_FALSE }} -> ${{ env.SOMETHING_FALSE }} should be equal to false - run: echo "Done " + - name: €{{ env.UNKNOWN }} -> ${{ env.UNKNOWN }} should be equal to + run: echo "Done " - - name: €{{ !env.SOMETHING_TRUE }} -> ${{ !env.SOMETHING_TRUE }} should be equal to false - run: echo "Done " + - name: €{{ env.SOMETHING_TRUE }} -> ${{ env.SOMETHING_TRUE }} should be equal to true + run: echo "Done " - - name: €{{ !env.SOMETHING_FALSE }} -> ${{ !env.SOMETHING_FALSE }} should be equal to false - run: echo "Done " + - name: €{{ env.SOMETHING_FALSE }} -> ${{ env.SOMETHING_FALSE }} should be equal to false + run: echo "Done " - - name: €{{ !env.SOMETHING_TRUE && true }} -> ${{ !env.SOMETHING_TRUE && true }} should be equal to false - run: echo "Done " + - name: €{{ !env.SOMETHING_TRUE }} -> ${{ !env.SOMETHING_TRUE }} should be equal to false + run: echo "Done " - - name: €{{ !env.SOMETHING_FALSE && true }} -> ${{ !env.SOMETHING_FALSE && true }} should be equal to false - run: echo "Done " + - name: €{{ !env.SOMETHING_FALSE }} -> ${{ !env.SOMETHING_FALSE }} should be equal to false + run: echo "Done " - - name: €{{ env.SOMETHING_TRUE && true }} -> ${{ env.SOMETHING_TRUE && true }} should be equal to true - run: echo "Done " + - name: €{{ !env.SOMETHING_TRUE && true }} -> ${{ !env.SOMETHING_TRUE && true }} should be equal to false + run: echo "Done " - - name: €{{ env.SOMETHING_FALSE && true }} -> ${{ env.SOMETHING_FALSE && true }} should be equal to true - run: echo "Done " + - name: €{{ !env.SOMETHING_FALSE && true }} -> ${{ !env.SOMETHING_FALSE && true }} should be equal to false + run: echo "Done " - - name: €{{ !env.SOMETHING_TRUE || true }} -> ${{ !env.SOMETHING_TRUE || true }} should be equal to true - run: echo "Done " + - name: €{{ env.SOMETHING_TRUE && true }} -> ${{ env.SOMETHING_TRUE && true }} should be equal to true + run: echo "Done " - - name: €{{ !env.SOMETHING_FALSE || true }} -> ${{ !env.SOMETHING_FALSE || true }} should be equal to true - run: echo "Done " + - name: €{{ env.SOMETHING_FALSE && true }} -> ${{ env.SOMETHING_FALSE && true }} should be equal to true + run: echo "Done " - - name: €{{ !env.SOMETHING_TRUE && false }} -> ${{ !env.SOMETHING_TRUE && false }} should be equal to false - run: echo "Done " + - name: €{{ !env.SOMETHING_TRUE || true }} -> ${{ !env.SOMETHING_TRUE || true }} should be equal to true + run: echo "Done " - - name: €{{ !env.SOMETHING_FALSE && false }} -> ${{ !env.SOMETHING_FALSE && false }} should be equal to false - run: echo "Done " + - name: €{{ !env.SOMETHING_FALSE || true }} -> ${{ !env.SOMETHING_FALSE || true }} should be equal to true + run: echo "Done " - - name: €{{ !env.SOMETHING_TRUE || false }} -> ${{ !env.SOMETHING_TRUE || false }} should be equal to false - run: echo "Done " + - name: €{{ !env.SOMETHING_TRUE && false }} -> ${{ !env.SOMETHING_TRUE && false }} should be equal to false + run: echo "Done " - - name: €{{ !env.SOMETHING_FALSE || false }} -> ${{ !env.SOMETHING_FALSE || false }} should be equal to false - run: echo "Done " + - name: €{{ !env.SOMETHING_FALSE && false }} -> ${{ !env.SOMETHING_FALSE && false }} should be equal to false + run: echo "Done " - - name: €{{ env.SOMETHING_TRUE || false }} -> ${{ env.SOMETHING_TRUE || false }} should be equal to true - run: echo "Done " + - name: €{{ !env.SOMETHING_TRUE || false }} -> ${{ !env.SOMETHING_TRUE || false }} should be equal to false + run: echo "Done " - - name: €{{ env.SOMETHING_FALSE || false }} -> ${{ env.SOMETHING_FALSE || false }} should be equal to false - run: echo "Done " + - name: €{{ !env.SOMETHING_FALSE || false }} -> ${{ !env.SOMETHING_FALSE || false }} should be equal to false + run: echo "Done " - - name: €{{ env.SOMETHING_FALSE }} && €{{ env.SOMETHING_TRUE }} -> ${{ env.SOMETHING_FALSE }} && ${{ env.SOMETHING_TRUE }} should be equal to false && true - run: echo "Done " + - name: €{{ env.SOMETHING_TRUE || false }} -> ${{ env.SOMETHING_TRUE || false }} should be equal to true + run: echo "Done " + + - name: €{{ env.SOMETHING_FALSE || false }} -> ${{ env.SOMETHING_FALSE || false }} should be equal to false + run: echo "Done " + + - name: €{{ env.SOMETHING_FALSE }} && €{{ env.SOMETHING_TRUE }} -> ${{ env.SOMETHING_FALSE }} && ${{ env.SOMETHING_TRUE }} should be equal to false && true + run: echo "Done " diff --git a/.github/workflows/test-if.yml b/.github/workflows/test-if.yml index 085851b..708df45 100644 --- a/.github/workflows/test-if.yml +++ b/.github/workflows/test-if.yml @@ -3,10 +3,10 @@ name: "Test what expressions result in true and false on Github" on: push env: - SOMETHING_TRUE: true - SOMETHING_FALSE: false - SOME_TEXT: text ACT: true + SOMETHING_FALSE: false + SOMETHING_TRUE: true + SOME_TEXT: text jobs: @@ -14,393 +14,393 @@ jobs: runs-on: ubuntu-latest steps: - - name: "❌ I should not run, expr: failure()" - id: step0 - if: failure() - run: echo "failure() should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: success()" - id: step1 - if: success() - run: echo OK - - - name: "Double checking expr: success()" - if: steps.step1.conclusion == 'skipped' - run: echo "success() should have been true, but wasn't" - - - name: "❌ I should not run, expr: cancelled()" - id: step2 - if: cancelled() - run: echo "cancelled() should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: always()" - id: step3 - if: always() - run: echo OK - - - name: "Double checking expr: always()" - if: steps.step3.conclusion == 'skipped' - run: echo "always() should have been true, but wasn't" - - - name: "✅ I should run, expr: true" - id: step4 - if: true - run: echo OK - - - name: "Double checking expr: true" - if: steps.step4.conclusion == 'skipped' - run: echo "true should have been true, but wasn't" - - - name: "❌ I should not run, expr: false" - id: step5 - if: false - run: echo "false should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: 1 != 0" - id: step8 - if: 1 != 0 - run: echo OK - - - name: "Double checking expr: 1 != 0" - if: steps.step8.conclusion == 'skipped' - run: echo "1 != 0 should have been true, but wasn't" - - - name: "❌ I should not run, expr: 1 != 1" - id: step9 - if: 1 != 1 - run: echo "1 != 1 should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: €{{ 1 != 0 }}" - id: step10 - if: ${{ 1 != 0 }} - run: echo OK - - - name: "Double checking expr: €{{ 1 != 0 }}" - if: steps.step10.conclusion == 'skipped' - run: echo "${{ 1 != 0 }} should have been true, but wasn't" - - - name: "❌ I should not run, expr: €{{ 1 != 1 }}" - id: step11 - if: ${{ 1 != 1 }} - run: echo "${{ 1 != 1 }} should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: 1 == 0" - id: step12 - if: 1 == 0 - run: echo "1 == 0 should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: 1 == 1" - id: step13 - if: 1 == 1 - run: echo OK - - - name: "Double checking expr: 1 == 1" - if: steps.step13.conclusion == 'skipped' - run: echo "1 == 1 should have been true, but wasn't" - - - name: "❌ I should not run, expr: 1 > 2" - id: step14 - if: 1 > 2 - run: echo "1 > 2 should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: 1 < 2" - id: step15 - if: 1 < 2 - run: echo OK - - - name: "Double checking expr: 1 < 2" - if: steps.step15.conclusion == 'skipped' - run: echo "1 < 2 should have been true, but wasn't" - - - name: "❌ I should not run, expr: true && false" - id: step16 - if: true && false - run: echo "true && false should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: true && 1 < 2" - id: step17 - if: true && 1 < 2 - run: echo OK - - - name: "Double checking expr: true && 1 < 2" - if: steps.step17.conclusion == 'skipped' - run: echo "true && 1 < 2 should have been true, but wasn't" - - - name: "✅ I should run, expr: false || 1 < 2" - id: step18 - if: false || 1 < 2 - run: echo OK - - - name: "Double checking expr: false || 1 < 2" - if: steps.step18.conclusion == 'skipped' - run: echo "false || 1 < 2 should have been true, but wasn't" - - - name: "❌ I should not run, expr: false || false" - id: step19 - if: false || false - run: echo "false || false should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: env.UNKNOWN == 'true'" - id: step20 - if: env.UNKNOWN == 'true' - run: echo "env.UNKNOWN == 'true' should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: env.UNKNOWN" - id: step21 - if: env.UNKNOWN - run: echo "env.UNKNOWN should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: env.SOME_TEXT" - id: step22 - if: env.SOME_TEXT - run: echo OK - - - name: "Double checking expr: env.SOME_TEXT" - if: steps.step22.conclusion == 'skipped' - run: echo "env.SOME_TEXT should have been true, but wasn't" - - - name: "✅ I should run, expr: env.SOME_TEXT == 'text'" - id: step23 - if: env.SOME_TEXT == 'text' - run: echo OK - - - name: "Double checking expr: env.SOME_TEXT == 'text'" - if: steps.step23.conclusion == 'skipped' - run: echo "env.SOME_TEXT == 'text' should have been true, but wasn't" - - - name: "✅ I should run, expr: env.SOMETHING_TRUE == 'true'" - id: step24 - if: env.SOMETHING_TRUE == 'true' - run: echo OK - - - name: "Double checking expr: env.SOMETHING_TRUE == 'true'" - if: steps.step24.conclusion == 'skipped' - run: echo "env.SOMETHING_TRUE == 'true' should have been true, but wasn't" - - - name: "❌ I should not run, expr: env.SOMETHING_FALSE == 'true'" - id: step25 - if: env.SOMETHING_FALSE == 'true' - run: echo "env.SOMETHING_FALSE == 'true' should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: env.SOMETHING_TRUE" - id: step26 - if: env.SOMETHING_TRUE - run: echo OK - - - name: "Double checking expr: env.SOMETHING_TRUE" - if: steps.step26.conclusion == 'skipped' - run: echo "env.SOMETHING_TRUE should have been true, but wasn't" - - - name: "✅ I should run, expr: env.SOMETHING_FALSE" - id: step27 - if: env.SOMETHING_FALSE - run: echo OK - - - name: "Double checking expr: env.SOMETHING_FALSE" - if: steps.step27.conclusion == 'skipped' - run: echo "env.SOMETHING_FALSE should have been true, but wasn't" - - - name: "❌ I should not run, expr: €{{ !env.SOMETHING_TRUE }}" - id: step30 - if: ${{ !env.SOMETHING_TRUE }} - run: echo "${{ !env.SOMETHING_TRUE }} should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: €{{ !env.SOMETHING_FALSE }}" - id: step31 - if: ${{ !env.SOMETHING_FALSE }} - run: echo "${{ !env.SOMETHING_FALSE }} should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: €{{ ! env.SOMETHING_TRUE }}" - id: step32 - if: ${{ ! env.SOMETHING_TRUE }} - run: echo "${{ ! env.SOMETHING_TRUE }} should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: €{{ ! env.SOMETHING_FALSE }}" - id: step33 - if: ${{ ! env.SOMETHING_FALSE }} - run: echo "${{ ! env.SOMETHING_FALSE }} should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: €{{ env.SOMETHING_TRUE }}" - id: step34 - if: ${{ env.SOMETHING_TRUE }} - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_TRUE }}" - if: steps.step34.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_TRUE }} should have been true, but wasn't" - - - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE }}" - id: step35 - if: ${{ env.SOMETHING_FALSE }} - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_FALSE }}" - if: steps.step35.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_FALSE }} should have been true, but wasn't" - - - name: "❌ I should not run, expr: €{{ !env.SOMETHING_TRUE }}" - id: step36 - if: ${{ !env.SOMETHING_TRUE }} - run: echo "${{ !env.SOMETHING_TRUE }} should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: €{{ !env.SOMETHING_FALSE }}" - id: step37 - if: ${{ !env.SOMETHING_FALSE }} - run: echo "${{ !env.SOMETHING_FALSE }} should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: €{{ !env.SOMETHING_TRUE && true }}" - id: step38 - if: ${{ !env.SOMETHING_TRUE && true }} - run: echo "${{ !env.SOMETHING_TRUE && true }} should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: €{{ !env.SOMETHING_FALSE && true }}" - id: step39 - if: ${{ !env.SOMETHING_FALSE && true }} - run: echo "${{ !env.SOMETHING_FALSE && true }} should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: €{{ !env.SOMETHING_TRUE || true }}" - id: step40 - if: ${{ !env.SOMETHING_TRUE || true }} - run: echo OK - - - name: "Double checking expr: €{{ !env.SOMETHING_TRUE || true }}" - if: steps.step40.conclusion == 'skipped' - run: echo "${{ !env.SOMETHING_TRUE || true }} should have been true, but wasn't" - - - name: "❌ I should not run, expr: €{{ !env.SOMETHING_FALSE || false }}" - id: step41 - if: ${{ !env.SOMETHING_FALSE || false }} - run: echo "${{ !env.SOMETHING_FALSE || false }} should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: €{{ env.SOMETHING_TRUE && true }}" - id: step42 - if: ${{ env.SOMETHING_TRUE && true }} - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_TRUE && true }}" - if: steps.step42.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_TRUE && true }} should have been true, but wasn't" - - - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE || true }}" - id: step43 - if: ${{ env.SOMETHING_FALSE || true }} - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_FALSE || true }}" - if: steps.step43.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_FALSE || true }} should have been true, but wasn't" - - - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE || false }}" - id: step44 - if: ${{ env.SOMETHING_FALSE || false }} - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_FALSE || false }}" - if: steps.step44.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_FALSE || false }} should have been true, but wasn't" - - - name: "✅ I should run, expr: €{{ env.SOMETHING_TRUE == 'true' }}" - id: step46 - if: ${{ env.SOMETHING_TRUE == 'true'}} - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_TRUE == 'true' }}" - if: steps.step46.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_TRUE == 'true'}} should have been true, but wasn't" - - - name: "❌ I should not run, expr: €{{ env.SOMETHING_FALSE == 'true' }}" - id: step47 - if: ${{ env.SOMETHING_FALSE == 'true'}} - run: echo "${{ env.SOMETHING_FALSE == 'true'}} should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE == 'false' }}" - id: step48 - if: ${{ env.SOMETHING_FALSE == 'false'}} - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_FALSE == 'false' }}" - if: steps.step48.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_FALSE == 'false'}} should have been true, but wasn't" - - - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE }} && €{{ env.SOMETHING_TRUE }}" - id: step49 - if: ${{ env.SOMETHING_FALSE }} && ${{ env.SOMETHING_TRUE }} - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_FALSE }} && €{{ env.SOMETHING_TRUE }}" - if: steps.step49.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_FALSE }} && ${{ env.SOMETHING_TRUE }} should have been true, but wasn't" - - - name: "✅ I should run, expr: false || env.SOMETHING_TRUE == 'true'" - id: step50 - if: false || env.SOMETHING_TRUE == 'true' - run: echo OK - - - name: "Double checking expr: false || env.SOMETHING_TRUE == 'true'" - if: steps.step50.conclusion == 'skipped' - run: echo "false || env.SOMETHING_TRUE == 'true' should have been true, but wasn't" - - - name: "✅ I should run, expr: true || env.SOMETHING_FALSE == 'true'" - id: step51 - if: true || env.SOMETHING_FALSE == 'true' - run: echo OK - - - name: "Double checking expr: true || env.SOMETHING_FALSE == 'true'" - if: steps.step51.conclusion == 'skipped' - run: echo "true || env.SOMETHING_FALSE == 'true' should have been true, but wasn't" - - - name: "✅ I should run, expr: true && env.SOMETHING_TRUE == 'true'" - id: step52 - if: true && env.SOMETHING_TRUE == 'true' - run: echo OK - - - name: "Double checking expr: true && env.SOMETHING_TRUE == 'true'" - if: steps.step52.conclusion == 'skipped' - run: echo "true && env.SOMETHING_TRUE == 'true' should have been true, but wasn't" - - - name: "❌ I should not run, expr: false && env.SOMETHING_TRUE == 'true'" - id: step53 - if: false && env.SOMETHING_TRUE == 'true' - run: echo "false && env.SOMETHING_TRUE == 'true' should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: env.SOMETHING_FALSE == 'true' && env.SOMETHING_TRUE == 'true'" - id: step54 - if: env.SOMETHING_FALSE == 'true' && env.SOMETHING_TRUE == 'true' - run: echo "env.SOMETHING_FALSE == 'true' && env.SOMETHING_TRUE == 'true' should be false, but was evaluated to true;" exit 1; - - - name: "❌ I should not run, expr: env.SOMETHING_FALSE == 'true' && true" - id: step55 - if: env.SOMETHING_FALSE == 'true' && true - run: echo "env.SOMETHING_FALSE == 'true' && true should be false, but was evaluated to true;" exit 1; - - - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE == 'true' }} && true" - id: step56 - if: ${{ env.SOMETHING_FALSE == 'true' }} && true - run: echo OK - - - name: "Double checking expr: €{{ env.SOMETHING_FALSE == 'true' }} && true" - if: steps.step56.conclusion == 'skipped' - run: echo "${{ env.SOMETHING_FALSE == 'true' }} && true should have been true, but wasn't" - - - name: "✅ I should run, expr: true && €{{ env.SOMETHING_FALSE == 'true' }}" - id: step57 - if: true && ${{ env.SOMETHING_FALSE == 'true' }} - run: echo OK - - - name: "Double checking expr: true && €{{ env.SOMETHING_FALSE == 'true' }}" - if: steps.step57.conclusion == 'skipped' - run: echo "true && ${{ env.SOMETHING_FALSE == 'true' }} should have been true, but wasn't" - - - name: "✅ I should run, expr: €{{ env.ACT }}" - id: step60 - if: ${{ env.ACT }} - run: echo OK - - - name: "Double checking expr: €{{ env.ACT }}" - if: steps.step60.conclusion == 'skipped' - run: echo "${{ env.ACT }} should have been true, but wasn't" - - - name: "❌ I should not run, expr: €{{ !env.ACT }}" - id: step61 - if: ${{ !env.ACT }} - run: echo "${{ !env.ACT }} should be false, but was evaluated to true;" exit 1; + - name: "❌ I should not run, expr: failure()" + id: step0 + if: failure() + run: echo "failure() should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: success()" + id: step1 + if: success() + run: echo OK + + - name: "Double checking expr: success()" + if: steps.step1.conclusion == 'skipped' + run: echo "success() should have been true, but wasn't" + + - name: "❌ I should not run, expr: cancelled()" + id: step2 + if: cancelled() + run: echo "cancelled() should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: always()" + id: step3 + if: always() + run: echo OK + + - name: "Double checking expr: always()" + if: steps.step3.conclusion == 'skipped' + run: echo "always() should have been true, but wasn't" + + - name: "✅ I should run, expr: true" + id: step4 + if: true + run: echo OK + + - name: "Double checking expr: true" + if: steps.step4.conclusion == 'skipped' + run: echo "true should have been true, but wasn't" + + - name: "❌ I should not run, expr: false" + id: step5 + if: false + run: echo "false should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: 1 != 0" + id: step8 + if: 1 != 0 + run: echo OK + + - name: "Double checking expr: 1 != 0" + if: steps.step8.conclusion == 'skipped' + run: echo "1 != 0 should have been true, but wasn't" + + - name: "❌ I should not run, expr: 1 != 1" + id: step9 + if: 1 != 1 + run: echo "1 != 1 should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: €{{ 1 != 0 }}" + id: step10 + if: ${{ 1 != 0 }} + run: echo OK + + - name: "Double checking expr: €{{ 1 != 0 }}" + if: steps.step10.conclusion == 'skipped' + run: echo "${{ 1 != 0 }} should have been true, but wasn't" + + - name: "❌ I should not run, expr: €{{ 1 != 1 }}" + id: step11 + if: ${{ 1 != 1 }} + run: echo "${{ 1 != 1 }} should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: 1 == 0" + id: step12 + if: 1 == 0 + run: echo "1 == 0 should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: 1 == 1" + id: step13 + if: 1 == 1 + run: echo OK + + - name: "Double checking expr: 1 == 1" + if: steps.step13.conclusion == 'skipped' + run: echo "1 == 1 should have been true, but wasn't" + + - name: "❌ I should not run, expr: 1 > 2" + id: step14 + if: 1 > 2 + run: echo "1 > 2 should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: 1 < 2" + id: step15 + if: 1 < 2 + run: echo OK + + - name: "Double checking expr: 1 < 2" + if: steps.step15.conclusion == 'skipped' + run: echo "1 < 2 should have been true, but wasn't" + + - name: "❌ I should not run, expr: true && false" + id: step16 + if: true && false + run: echo "true && false should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: true && 1 < 2" + id: step17 + if: true && 1 < 2 + run: echo OK + + - name: "Double checking expr: true && 1 < 2" + if: steps.step17.conclusion == 'skipped' + run: echo "true && 1 < 2 should have been true, but wasn't" + + - name: "✅ I should run, expr: false || 1 < 2" + id: step18 + if: false || 1 < 2 + run: echo OK + + - name: "Double checking expr: false || 1 < 2" + if: steps.step18.conclusion == 'skipped' + run: echo "false || 1 < 2 should have been true, but wasn't" + + - name: "❌ I should not run, expr: false || false" + id: step19 + if: false || false + run: echo "false || false should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: env.UNKNOWN == 'true'" + id: step20 + if: env.UNKNOWN == 'true' + run: echo "env.UNKNOWN == 'true' should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: env.UNKNOWN" + id: step21 + if: env.UNKNOWN + run: echo "env.UNKNOWN should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: env.SOME_TEXT" + id: step22 + if: env.SOME_TEXT + run: echo OK + + - name: "Double checking expr: env.SOME_TEXT" + if: steps.step22.conclusion == 'skipped' + run: echo "env.SOME_TEXT should have been true, but wasn't" + + - name: "✅ I should run, expr: env.SOME_TEXT == 'text'" + id: step23 + if: env.SOME_TEXT == 'text' + run: echo OK + + - name: "Double checking expr: env.SOME_TEXT == 'text'" + if: steps.step23.conclusion == 'skipped' + run: echo "env.SOME_TEXT == 'text' should have been true, but wasn't" + + - name: "✅ I should run, expr: env.SOMETHING_TRUE == 'true'" + id: step24 + if: env.SOMETHING_TRUE == 'true' + run: echo OK + + - name: "Double checking expr: env.SOMETHING_TRUE == 'true'" + if: steps.step24.conclusion == 'skipped' + run: echo "env.SOMETHING_TRUE == 'true' should have been true, but wasn't" + + - name: "❌ I should not run, expr: env.SOMETHING_FALSE == 'true'" + id: step25 + if: env.SOMETHING_FALSE == 'true' + run: echo "env.SOMETHING_FALSE == 'true' should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: env.SOMETHING_TRUE" + id: step26 + if: env.SOMETHING_TRUE + run: echo OK + + - name: "Double checking expr: env.SOMETHING_TRUE" + if: steps.step26.conclusion == 'skipped' + run: echo "env.SOMETHING_TRUE should have been true, but wasn't" + + - name: "✅ I should run, expr: env.SOMETHING_FALSE" + id: step27 + if: env.SOMETHING_FALSE + run: echo OK + + - name: "Double checking expr: env.SOMETHING_FALSE" + if: steps.step27.conclusion == 'skipped' + run: echo "env.SOMETHING_FALSE should have been true, but wasn't" + + - name: "❌ I should not run, expr: €{{ !env.SOMETHING_TRUE }}" + id: step30 + if: ${{ !env.SOMETHING_TRUE }} + run: echo "${{ !env.SOMETHING_TRUE }} should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: €{{ !env.SOMETHING_FALSE }}" + id: step31 + if: ${{ !env.SOMETHING_FALSE }} + run: echo "${{ !env.SOMETHING_FALSE }} should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: €{{ ! env.SOMETHING_TRUE }}" + id: step32 + if: ${{ ! env.SOMETHING_TRUE }} + run: echo "${{ ! env.SOMETHING_TRUE }} should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: €{{ ! env.SOMETHING_FALSE }}" + id: step33 + if: ${{ ! env.SOMETHING_FALSE }} + run: echo "${{ ! env.SOMETHING_FALSE }} should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: €{{ env.SOMETHING_TRUE }}" + id: step34 + if: ${{ env.SOMETHING_TRUE }} + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_TRUE }}" + if: steps.step34.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_TRUE }} should have been true, but wasn't" + + - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE }}" + id: step35 + if: ${{ env.SOMETHING_FALSE }} + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_FALSE }}" + if: steps.step35.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_FALSE }} should have been true, but wasn't" + + - name: "❌ I should not run, expr: €{{ !env.SOMETHING_TRUE }}" + id: step36 + if: ${{ !env.SOMETHING_TRUE }} + run: echo "${{ !env.SOMETHING_TRUE }} should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: €{{ !env.SOMETHING_FALSE }}" + id: step37 + if: ${{ !env.SOMETHING_FALSE }} + run: echo "${{ !env.SOMETHING_FALSE }} should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: €{{ !env.SOMETHING_TRUE && true }}" + id: step38 + if: ${{ !env.SOMETHING_TRUE && true }} + run: echo "${{ !env.SOMETHING_TRUE && true }} should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: €{{ !env.SOMETHING_FALSE && true }}" + id: step39 + if: ${{ !env.SOMETHING_FALSE && true }} + run: echo "${{ !env.SOMETHING_FALSE && true }} should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: €{{ !env.SOMETHING_TRUE || true }}" + id: step40 + if: ${{ !env.SOMETHING_TRUE || true }} + run: echo OK + + - name: "Double checking expr: €{{ !env.SOMETHING_TRUE || true }}" + if: steps.step40.conclusion == 'skipped' + run: echo "${{ !env.SOMETHING_TRUE || true }} should have been true, but wasn't" + + - name: "❌ I should not run, expr: €{{ !env.SOMETHING_FALSE || false }}" + id: step41 + if: ${{ !env.SOMETHING_FALSE || false }} + run: echo "${{ !env.SOMETHING_FALSE || false }} should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: €{{ env.SOMETHING_TRUE && true }}" + id: step42 + if: ${{ env.SOMETHING_TRUE && true }} + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_TRUE && true }}" + if: steps.step42.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_TRUE && true }} should have been true, but wasn't" + + - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE || true }}" + id: step43 + if: ${{ env.SOMETHING_FALSE || true }} + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_FALSE || true }}" + if: steps.step43.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_FALSE || true }} should have been true, but wasn't" + + - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE || false }}" + id: step44 + if: ${{ env.SOMETHING_FALSE || false }} + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_FALSE || false }}" + if: steps.step44.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_FALSE || false }} should have been true, but wasn't" + + - name: "✅ I should run, expr: €{{ env.SOMETHING_TRUE == 'true' }}" + id: step46 + if: ${{ env.SOMETHING_TRUE == 'true'}} + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_TRUE == 'true' }}" + if: steps.step46.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_TRUE == 'true'}} should have been true, but wasn't" + + - name: "❌ I should not run, expr: €{{ env.SOMETHING_FALSE == 'true' }}" + id: step47 + if: ${{ env.SOMETHING_FALSE == 'true'}} + run: echo "${{ env.SOMETHING_FALSE == 'true'}} should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE == 'false' }}" + id: step48 + if: ${{ env.SOMETHING_FALSE == 'false'}} + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_FALSE == 'false' }}" + if: steps.step48.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_FALSE == 'false'}} should have been true, but wasn't" + + - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE }} && €{{ env.SOMETHING_TRUE }}" + id: step49 + if: ${{ env.SOMETHING_FALSE }} && ${{ env.SOMETHING_TRUE }} + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_FALSE }} && €{{ env.SOMETHING_TRUE }}" + if: steps.step49.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_FALSE }} && ${{ env.SOMETHING_TRUE }} should have been true, but wasn't" + + - name: "✅ I should run, expr: false || env.SOMETHING_TRUE == 'true'" + id: step50 + if: false || env.SOMETHING_TRUE == 'true' + run: echo OK + + - name: "Double checking expr: false || env.SOMETHING_TRUE == 'true'" + if: steps.step50.conclusion == 'skipped' + run: echo "false || env.SOMETHING_TRUE == 'true' should have been true, but wasn't" + + - name: "✅ I should run, expr: true || env.SOMETHING_FALSE == 'true'" + id: step51 + if: true || env.SOMETHING_FALSE == 'true' + run: echo OK + + - name: "Double checking expr: true || env.SOMETHING_FALSE == 'true'" + if: steps.step51.conclusion == 'skipped' + run: echo "true || env.SOMETHING_FALSE == 'true' should have been true, but wasn't" + + - name: "✅ I should run, expr: true && env.SOMETHING_TRUE == 'true'" + id: step52 + if: true && env.SOMETHING_TRUE == 'true' + run: echo OK + + - name: "Double checking expr: true && env.SOMETHING_TRUE == 'true'" + if: steps.step52.conclusion == 'skipped' + run: echo "true && env.SOMETHING_TRUE == 'true' should have been true, but wasn't" + + - name: "❌ I should not run, expr: false && env.SOMETHING_TRUE == 'true'" + id: step53 + if: false && env.SOMETHING_TRUE == 'true' + run: echo "false && env.SOMETHING_TRUE == 'true' should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: env.SOMETHING_FALSE == 'true' && env.SOMETHING_TRUE == 'true'" + id: step54 + if: env.SOMETHING_FALSE == 'true' && env.SOMETHING_TRUE == 'true' + run: echo "env.SOMETHING_FALSE == 'true' && env.SOMETHING_TRUE == 'true' should be false, but was evaluated to true;" exit 1; + + - name: "❌ I should not run, expr: env.SOMETHING_FALSE == 'true' && true" + id: step55 + if: env.SOMETHING_FALSE == 'true' && true + run: echo "env.SOMETHING_FALSE == 'true' && true should be false, but was evaluated to true;" exit 1; + + - name: "✅ I should run, expr: €{{ env.SOMETHING_FALSE == 'true' }} && true" + id: step56 + if: ${{ env.SOMETHING_FALSE == 'true' }} && true + run: echo OK + + - name: "Double checking expr: €{{ env.SOMETHING_FALSE == 'true' }} && true" + if: steps.step56.conclusion == 'skipped' + run: echo "${{ env.SOMETHING_FALSE == 'true' }} && true should have been true, but wasn't" + + - name: "✅ I should run, expr: true && €{{ env.SOMETHING_FALSE == 'true' }}" + id: step57 + if: true && ${{ env.SOMETHING_FALSE == 'true' }} + run: echo OK + + - name: "Double checking expr: true && €{{ env.SOMETHING_FALSE == 'true' }}" + if: steps.step57.conclusion == 'skipped' + run: echo "true && ${{ env.SOMETHING_FALSE == 'true' }} should have been true, but wasn't" + + - name: "✅ I should run, expr: €{{ env.ACT }}" + id: step60 + if: ${{ env.ACT }} + run: echo OK + + - name: "Double checking expr: €{{ env.ACT }}" + if: steps.step60.conclusion == 'skipped' + run: echo "${{ env.ACT }} should have been true, but wasn't" + + - name: "❌ I should not run, expr: €{{ !env.ACT }}" + id: step61 + if: ${{ !env.ACT }} + run: echo "${{ !env.ACT }} should be false, but was evaluated to true;" exit 1; diff --git a/pkg/runner/expression_test.go b/pkg/runner/expression_test.go index fb2063c..cf09450 100644 --- a/pkg/runner/expression_test.go +++ b/pkg/runner/expression_test.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "regexp" + "sort" "testing" "github.com/nektos/act/pkg/model" @@ -15,7 +16,7 @@ func TestEvaluate(t *testing.T) { Config: &Config{ Workdir: ".", Secrets: map[string]string{ - "LOWER_CASE_SECRET": "value", + "CASE_INSENSITIVE_SECRET": "value", }, }, Env: map[string]string{ @@ -107,7 +108,8 @@ func TestEvaluate(t *testing.T) { {"matrix.os", "Linux", ""}, {"matrix.foo", "bar", ""}, {"env.key", "value", ""}, - {"secrets.lower_case_secret", "value", ""}, + {"secrets.CASE_INSENSITIVE_SECRET", "value", ""}, + {"secrets.case_insensitive_secret", "value", ""}, } for _, table := range tables { @@ -131,7 +133,7 @@ func TestInterpolate(t *testing.T) { Config: &Config{ Workdir: ".", Secrets: map[string]string{ - "LOWER_CASE_SECRET": "value", + "CASE_INSENSITIVE_SECRET": "value", }, }, Env: map[string]string{ @@ -160,7 +162,8 @@ func TestInterpolate(t *testing.T) { {" ${{ env.KEYWITHNOTHING }} ", " valuewithnothing "}, {" ${{ env.KEY-WITH-HYPHENS }} ", " value-with-hyphens "}, {" ${{ env.KEY_WITH_UNDERSCORES }} ", " value_with_underscores "}, - {" ${{ secrets.lower_case_secret }} ", " value "}, + {"${{ secrets.CASE_INSENSITIVE_SECRET }}", "value"}, + {"${{ secrets.case_insensitive_secret }}", "value"}, {"${{ env.UNKNOWN }}", ""}, {"${{ env.SOMETHING_TRUE }}", "true"}, {"${{ env.SOMETHING_FALSE }}", "false"}, @@ -198,11 +201,15 @@ func updateTestExpressionWorkflow(t *testing.T, tables []struct { }, rc *RunContext) { var envs string - for k, v := range rc.Env { - envs += fmt.Sprintf( - ` %s: %s -`, k, v) + keys := make([]string, 0, len(rc.Env)) + for k := range rc.Env { + keys = append(keys, k) } + sort.Strings(keys) + for _, k := range keys { + envs += fmt.Sprintf(" %s: %s\n", k, rc.Env[k]) + } + workflow := fmt.Sprintf(` name: "Test how expressions are handled on Github" on: push @@ -223,10 +230,7 @@ jobs: }) name := fmt.Sprintf(`%s -> %s should be equal to %s`, expr, table.in, table.out) echo := `run: echo "Done "` - workflow += fmt.Sprintf(` - - name: %s - %s -`, name, echo) + workflow += fmt.Sprintf("\n - name: %s\n %s\n", name, echo) } file, err := os.Create("../../.github/workflows/test-expressions.yml") diff --git a/pkg/runner/run_context_test.go b/pkg/runner/run_context_test.go index 01dab5e..58269d1 100644 --- a/pkg/runner/run_context_test.go +++ b/pkg/runner/run_context_test.go @@ -4,6 +4,7 @@ import ( "fmt" "os" "regexp" + "sort" "strings" "testing" @@ -158,11 +159,15 @@ func updateTestIfWorkflow(t *testing.T, tables []struct { }, rc *RunContext) { var envs string - for k, v := range rc.Env { - envs += fmt.Sprintf( - ` %s: %s -`, k, v) + keys := make([]string, 0, len(rc.Env)) + for k := range rc.Env { + keys = append(keys, k) } + sort.Strings(keys) + for _, k := range keys { + envs += fmt.Sprintf(" %s: %s\n", k, rc.Env[k]) + } + workflow := fmt.Sprintf(` name: "Test what expressions result in true and false on Github" on: push @@ -191,18 +196,9 @@ jobs: echo = `run: echo OK` name = fmt.Sprintf(`"✅ I should run, expr: %s"`, expr) } - workflow += fmt.Sprintf(` - - name: %s - id: step%d - if: %s - %s -`, name, i, table.in, echo) + workflow += fmt.Sprintf("\n - name: %s\n id: step%d\n if: %s\n %s\n", name, i, table.in, echo) if table.out { - workflow += fmt.Sprintf(` - - name: "Double checking expr: %s" - if: steps.step%d.conclusion == 'skipped' - run: echo "%s should have been true, but wasn't" -`, expr, i, table.in) + workflow += fmt.Sprintf("\n - name: \"Double checking expr: %s\"\n if: steps.step%d.conclusion == 'skipped'\n run: echo \"%s should have been true, but wasn't\"\n", expr, i, table.in) } }