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


jobs:
  test-ifs-and-buts:
    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;