Skip to content

Problems with 'ignore_error` #456

@marco-m

Description

@marco-m

This issue summarises two different problems I found with ignore_error. Some of these are already discussed in #363, some others are new and arise when using Go templates for the RHS of ignore_error.

Taskfile

version: "3"

tasks:

  pass:
    cmd: exit 0

  fail:
    cmds:
      - echo Failing task
      - exit 100

  ignore-error-task-without-template:
    cmds:
      - task: fail
        ignore_error: true
      - echo After ignore_error

  ignore-error-cmd-without-template:
    cmds:
      - cmd: exit 101
        ignore_error: true
      - echo After ignore_error

  ignore-error-task-with-template:
    cmds:
      - cmd: echo IGNORE="$IGNORE"
      - cmd: echo '{{if .IGNORE}}true{{else}}false{{end}}'
      - task: fail
        ignore_error: '{{if .IGNORE}}true{{else}}false{{end}}'
      - echo After ignore_error

  ignore-error-cmd-with-template:
    cmds:
      - cmd: echo IGNORE="$IGNORE"
      - cmd: echo '{{if .IGNORE}}true{{else}}false{{end}}'
      - cmd: exit 102
        ignore_error: '{{if .IGNORE}}true{{else}}false{{end}}'
      - echo After ignore_error

Target fail

Works as expected:

$ task fail
task: echo Failing task
Failing task
task: exit 100
task: Failed to run task "fail": exit status 100

Target ignore-error-task-without-template

Fails:

$ task ignore-error-task-without-template
task: echo Failing task
Failing task
task: exit 100
task: Failed to run task "ignore-error-task-without-template": task: Failed to run task "fail": exit status 100

Expected:

$ task ignore-error-task-without-template
task: echo Failing task
Failing task
task: exit 100
task: echo After ignore_error
After ignore_error

Target ignore-error-cmd-without-template

Works as expected:

$ task ignore-error-cmd-without-template
task: exit 101
task: echo After ignore_error
After ignore_error

Target ignore-error-task-with-template

Works as expected:

$ task ignore-error-task-with-template
task: echo IGNORE="$IGNORE"
IGNORE=
task: echo 'false'
false
task: echo Failing task
Failing task
task: exit 100
task: Failed to run task "ignore-error-task-with-template": task: Failed to run task "fail": exit status 100

Fails:

$ IGNORE=1 task ignore-error-task-with-template
task: echo IGNORE="$IGNORE"
IGNORE=1
task: echo 'true'
true
task: echo Failing task
Failing task
task: exit 100
task: Failed to run task "ignore-error-task-with-template": task: Failed to run task "fail": exit status 100

Expected:

$ IGNORE=1 task ignore-error-task-with-template
task: echo IGNORE="$IGNORE"
IGNORE=1
task: echo 'true'
true
task: echo Failing task
Failing task
task: exit 100
task: echo After ignore_error
After ignore_error

Target ignore-error-cmd-with-template

Fails:

$ task ignore-error-cmd-with-template
task: echo IGNORE="$IGNORE"
IGNORE=
task: echo 'false'
false
task: echo After ignore_error
After ignore_error

Expected:

$ task ignore-error-cmd-with-template
task: echo IGNORE="$IGNORE"
IGNORE=
task: echo 'false'
false
task: exit 102
task: Failed to run task "ignore-error-cmd-with-template": exit status 102

Somewhat works as expected:

"somewhat" because the previous bug just makes this work always:

$ IGNORE=1 task ignore-error-cmd-with-template
task: echo IGNORE="$IGNORE"
IGNORE=1
task: echo 'true'
true
task: echo After ignore_error
After ignore_error

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions