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

    No fields configured for bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions