mirror of
https://github.com/go-task/task.git
synced 2025-12-25 07:59:28 +01:00
Add comprehensive test cases for: - Task calls in cmds with if conditions - Go template functions (eq, ne, and, or) - Direct template variable evaluation - CLI variable overrides - Task-level if with templates
161 lines
3.5 KiB
YAML
161 lines
3.5 KiB
YAML
version: '3'
|
|
|
|
vars:
|
|
SHOULD_RUN: "yes"
|
|
ENV: "prod"
|
|
FEATURE_ENABLED: "true"
|
|
FEATURE_DISABLED: "false"
|
|
|
|
tasks:
|
|
# Basic command-level if (condition met)
|
|
cmd-if-true:
|
|
cmds:
|
|
- cmd: echo "executed"
|
|
if: "true"
|
|
|
|
# Basic command-level if (condition not met)
|
|
cmd-if-false:
|
|
cmds:
|
|
- cmd: echo "should not appear"
|
|
if: "false"
|
|
- echo "this runs"
|
|
|
|
# Task-level if (condition met)
|
|
task-if-true:
|
|
if: "true"
|
|
cmds:
|
|
- echo "task executed"
|
|
|
|
# Task-level if (condition not met)
|
|
task-if-false:
|
|
if: "false"
|
|
cmds:
|
|
- echo "should not appear"
|
|
|
|
# With template variables
|
|
if-with-template:
|
|
cmds:
|
|
- cmd: echo "Running because SHOULD_RUN={{.SHOULD_RUN}}"
|
|
if: '[ "{{.SHOULD_RUN}}" = "yes" ]'
|
|
|
|
# If inside for loop
|
|
if-in-for-loop:
|
|
cmds:
|
|
- for: ["a", "b", "c"]
|
|
cmd: echo "processing {{.ITEM}}"
|
|
if: '[ "{{.ITEM}}" != "b" ]'
|
|
|
|
# If on task call
|
|
if-on-task-call:
|
|
cmds:
|
|
- task: subtask
|
|
if: "true"
|
|
|
|
subtask:
|
|
internal: true
|
|
cmds:
|
|
- echo "subtask ran"
|
|
|
|
# If combined with platforms (both must pass)
|
|
if-with-platforms:
|
|
cmds:
|
|
- cmd: echo "condition and platform met"
|
|
platforms: [linux, darwin, windows]
|
|
if: "true"
|
|
|
|
# Skip task call
|
|
skip-task-call:
|
|
cmds:
|
|
- task: subtask
|
|
if: "false"
|
|
- echo "after skipped task call"
|
|
|
|
# Task call in cmds with if condition met
|
|
task-call-if-true:
|
|
cmds:
|
|
- task: subtask
|
|
if: "true"
|
|
- echo "after task call"
|
|
|
|
# Task call in cmds with if condition not met
|
|
task-call-if-false:
|
|
cmds:
|
|
- task: subtask
|
|
if: "false"
|
|
- echo "continues after skipped task"
|
|
|
|
# Template eq - condition met
|
|
template-eq-true:
|
|
cmds:
|
|
- cmd: echo "env is prod"
|
|
if: '{{ eq .ENV "prod" }}'
|
|
|
|
# Template eq - condition not met
|
|
template-eq-false:
|
|
cmds:
|
|
- cmd: echo "should not appear"
|
|
if: '{{ eq .ENV "dev" }}'
|
|
- echo "this runs"
|
|
|
|
# Template ne (not equal)
|
|
template-ne:
|
|
cmds:
|
|
- cmd: echo "env is not dev"
|
|
if: '{{ ne .ENV "dev" }}'
|
|
|
|
# Template with boolean-like variable
|
|
template-bool-true:
|
|
cmds:
|
|
- cmd: echo "feature enabled"
|
|
if: '{{ eq .FEATURE_ENABLED "true" }}'
|
|
|
|
# Template with boolean-like variable (false)
|
|
template-bool-false:
|
|
cmds:
|
|
- cmd: echo "should not appear"
|
|
if: '{{ eq .FEATURE_DISABLED "true" }}'
|
|
- echo "feature was disabled"
|
|
|
|
# Direct true/false from template
|
|
template-direct-true:
|
|
cmds:
|
|
- cmd: echo "direct true works"
|
|
if: '{{ .FEATURE_ENABLED }}'
|
|
|
|
# Direct true/false from template (false case)
|
|
template-direct-false:
|
|
cmds:
|
|
- cmd: echo "should not appear"
|
|
if: '{{ .FEATURE_DISABLED }}'
|
|
- echo "direct false skipped correctly"
|
|
|
|
# Template with CLI variable override
|
|
template-cli-var:
|
|
cmds:
|
|
- cmd: echo "MY_VAR is yes"
|
|
if: '{{ eq .MY_VAR "yes" }}'
|
|
|
|
# Combined template conditions with and
|
|
template-and:
|
|
cmds:
|
|
- cmd: echo "both conditions met"
|
|
if: '{{ and (eq .ENV "prod") (eq .FEATURE_ENABLED "true") }}'
|
|
|
|
# Combined template conditions with or
|
|
template-or:
|
|
cmds:
|
|
- cmd: echo "at least one condition met"
|
|
if: '{{ or (eq .ENV "dev") (eq .ENV "prod") }}'
|
|
|
|
# Task-level if with template
|
|
task-level-template:
|
|
if: '{{ eq .ENV "prod" }}'
|
|
cmds:
|
|
- echo "task runs in prod"
|
|
|
|
# Task-level if with template (not met)
|
|
task-level-template-false:
|
|
if: '{{ eq .ENV "dev" }}'
|
|
cmds:
|
|
- echo "should not appear"
|