Skip to content

Instantly share code, notes, and snippets.

@giner
Last active April 6, 2026 03:39
Show Gist options
  • Select an option

  • Save giner/cbc8b0902a94f7ad6e50a1e83fa88a05 to your computer and use it in GitHub Desktop.

Select an option

Save giner/cbc8b0902a94f7ad6e50a1e83fa88a05 to your computer and use it in GitHub Desktop.
Workflow to test Truthy and Falsy expressions in GitHub Actions conditionals
on:
push:
jobs:
test-github-actions-expressions-in-conditionals:
runs-on: ubuntu-latest
steps:
# Note that in conditionals, falsy values (false, 0, -0, "", '', null) are coerced to false and truthy (true and other non-falsy values) are coerced to true.
# See https://docs.github.com/en/actions/reference/workflows-and-actions/expressions#literals
- run: "echo \"if: always() && 0 == false\""
if: always() && 0 == false
- run: "echo \"if: always() && -0 == false\""
if: always() && -0 == false
- run: "echo \"if: always() && '' == false\""
if: always() && '' == false
- run: "echo \"if: always() && null == false\""
if: always() && null == false
- run: "echo \"if: always() && true == true\""
if: always() && true == true
- run: "echo \"if: always() && 1 == true\""
if: always() && 1 == true
- run: "echo \"if: always() && -1 == true\""
if: always() && -1 == true
- run: "echo \"if: always() && 2 == true\""
if: always() && 2 == true
- run: "echo \"if: always() && ' ' == true\""
if: always() && ' ' == true
- run: "echo \"if: always() && 'string' == true\""
if: always() && 'string' == true
- run: "echo \"if: always() && fromJSON('[]') == true\""
if: always() && fromJSON('[]') == true
- run: "echo \"if: always() && fromJSON('{}') == true\""
if: always() && fromJSON('{}') == true
- run: "echo \"if: always() && fromJSON('[]') == false\""
if: always() && fromJSON('[]') == false
- run: "echo \"if: always() && fromJSON('{}') == false\""
if: always() && fromJSON('{}') == false
- run: "echo \"if: always() && inputs.not_provided == false\""
if: always() && inputs.not_provided == false
- run: "echo \"if: always() && inputs.not_provided == null\""
if: always() && inputs.not_provided == null
- run: "echo \"if: always() && 0\""
if: always() && 0
- run: "echo \"if: always() && -0\""
if: always() && -0
- run: "echo \"if: always() && ''\""
if: always() && ''
- run: "echo \"if: always() && null\""
if: always() && null
- run: "echo \"if: always() && true\""
if: always() && true
- run: "echo \"if: always() && 1\""
if: always() && 1
- run: "echo \"if: always() && -1\""
if: always() && -1
- run: "echo \"if: always() && 2\""
if: always() && 2
- run: "echo \"if: always() && ' '\""
if: always() && ' '
- run: "echo \"if: always() && 'string'\""
if: always() && 'string'
- run: "echo \"if: always() && fromJSON('false')\""
if: always() && fromJSON('false')
- run: "echo \"if: always() && fromJSON('0')\""
if: always() && fromJSON('0')
- run: "echo \"if: always() && fromJSON('-0')\""
if: always() && fromJSON('-0')
- run: "echo \"if: always() && fromJSON('1')\""
if: always() && fromJSON('1')
- run: "echo \"if: always() && fromJSON('-1')\""
if: always() && fromJSON('-1')
- run: "echo \"if: always() && fromJSON('\"\"')\""
if: always() && fromJSON('""')
- run: "echo \"if: always() && fromJSON('true')\""
if: always() && fromJSON('true')
- run: "echo \"if: always() && fromJSON('[]')\""
if: always() && fromJSON('[]')
- run: "echo \"if: always() && fromJSON('{}')\""
if: always() && fromJSON('{}')
- run: "echo \"if: always() && false == false\""
if: always() && false == false
@giner
Copy link
Copy Markdown
Author

giner commented Apr 6, 2026

Results:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment