act/.github/workflows/test-if.yml
Torbjørn Vatn b3299ecd30
Act env (#417)
* Test more if env variants

* The correct negation syntax is !=

* Make the Interpolate function support negated booleans from envs

* Move assert := a.New(t) into t.Run

This uncovered that some of the test premisses was wrong and the
Eval Bool function also had flaws

* Remove a stray logrus import

* Add an ACT env set to true

This can be used to skip certain steps that you don't want to run locally
when testing. E.g. steps that sends messages to Slack channels on successful
builds etc.

* Add a description about env.ACT to the readme

* A new attempt at Interpolation and EvalBool

* One small merge fix

* Remove some fmt.Printfs

* Fix some merge conflicts
2020-11-18 07:14:34 -08:00

406 lines
15 KiB
YAML

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;