Skip to content

test(tasks): migrate test_task_help atask to usage field#9549

Merged
jdx merged 1 commit intomainfrom
claude/vigorous-curran-e781fe
May 2, 2026
Merged

test(tasks): migrate test_task_help atask to usage field#9549
jdx merged 1 commit intomainfrom
claude/vigorous-curran-e781fe

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented May 2, 2026

Summary

The tera_template_task_args deprecation has warn_at = 2026.5.0, which is the version being released in #9485. Once the warning starts firing, tasks/test_task_help fails:

$ mise run atask --help 2>&1 || true
mise WARN  deprecated [tera_template_task_args]: Task 'atask' uses deprecated Tera template functions...
Usage: atask <myarg>
...

The first assertion in the test is an exact equality check, so the prepended warning breaks it (CI run).

This migrates the test's atask from the deprecated {{arg(...)}} Tera form to the usage field. Both produce identical help output, and using the non-deprecated form is the future-correct shape anyway.

Test plan

  • mise run test:e2e tasks/test_task_help passes locally (all 13 assertions)

🤖 Generated with Claude Code


Note

Low Risk
Low risk: this only updates an e2e test fixture to avoid deprecated arg templating and resulting warning output that breaks an exact help assertion.

Overview
Updates the e2e/tasks/test_task_help fixture to stop using deprecated Tera {{arg(...)}} templating for task args.

The atask definition now declares args via the usage field and references the parsed value ($usage_myarg) in run, keeping mise run atask --help output stable and preventing warning-prefixed output from failing the exact-match assertion.

Reviewed by Cursor Bugbot for commit c7b259f. Bugbot is set up for automated code reviews on this repo. Configure here.

The tera_template_task_args deprecation warning starts at 2026.5.0,
which broke an exact-match assertion in tasks/test_task_help by
prepending a deprecation warning to stderr. Migrated atask from the
deprecated `arg()` Tera template to the equivalent `usage` field —
same help output, no warning.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the test_task_help E2E test to migrate from Tera-based argument functions to the new task usage syntax and environment variables. The changes include updating the mise.toml generation to use usage definitions and accessing arguments via shell variables. Feedback was provided to quote the $usage_myarg variable in the script to prevent word splitting or glob expansion, ensuring robust handling of arguments with spaces or special characters.

Comment thread e2e/tasks/test_task_help
[tasks.atask]
run = 'echo {{arg(name="myarg")}}'
usage = 'arg "<myarg>"'
run = 'echo $usage_myarg'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

When migrating from the Tera-based arg() function to environment variables, it is recommended to quote the variable in the shell script. The previous Tera implementation handled shell-quoting automatically, whereas using $usage_myarg directly in the script can lead to word splitting or glob expansion if the argument contains spaces or special characters.

run = 'echo "$usage_myarg"'

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tried this — it breaks the bypass-parser assertion at test_task_help:21:

assert "mise atask -q -- --help 2>&1 || true" "--help"

With -- --help the usage parser is skipped, so $usage_myarg is empty. The trailing --help is appended as a script arg:

  • echo $usage_myarg --help--help ✓ (empty word collapses)
  • echo "$usage_myarg" --help --help ✗ (literal empty arg = leading space)

The test specifically exercises this empty-bypass case, so I'm leaving it unquoted. (Generally good advice though.)

This comment was generated by an AI coding assistant.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 2, 2026

Greptile Summary

This PR replaces the deprecated {{arg(name="myarg")}} Tera template in e2e/tasks/test_task_help with the modern usage = 'arg "<myarg>"' field and a $usage_myarg shell variable, preventing the tera_template_task_args deprecation warning (firing at warn_at = 2026.5.0) from breaking the test's exact-equality assertion. The heredoc delimiter is also correctly changed from <<EOF to <<'EOF' so the shell does not expand $usage_myarg to empty before writing it into mise.toml.

Confidence Score: 5/5

Safe to merge — targeted, well-reasoned test fix with no production code changes.

Single-file test change with a clear motivation (upcoming deprecation warning breaking an exact-equality assertion), correct <<'EOF' quoting to prevent accidental shell expansion, and confirmed passing locally.

No files require special attention.

Important Files Changed

Filename Overview
e2e/tasks/test_task_help Migrates atask from deprecated Tera {{arg(...)}} to the usage field + $usage_myarg shell variable; also fixes the heredoc delimiter from <<EOF to <<'EOF' to prevent shell-expanding $usage_myarg before it is written to mise.toml.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["mise run atask --help"] --> B{arg source}
    B -- "old: Tera {{arg(name='myarg')}}" --> C["tera_template_task_args\ndeprecation WARNING fires\n(warn_at = 2026.5.0)"]
    C --> D["WARN prepended to stdout\n→ exact-equality assertion FAILS"]
    B -- "new: usage = 'arg <myarg>'" --> E["No deprecation warning\n→ clean help output"]
    E --> F["Exact-equality assertion PASSES"]
Loading

Reviews (1): Last reviewed commit: "test(tasks): migrate test_task_help atas..." | Re-trigger Greptile

@jdx jdx merged commit ea39b55 into main May 2, 2026
38 checks passed
@jdx jdx deleted the claude/vigorous-curran-e781fe branch May 2, 2026 18:50
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 2, 2026

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 x -- echo 17.3 ± 0.5 16.3 22.0 1.00
mise x -- echo 17.7 ± 0.5 16.8 23.0 1.02 ± 0.04

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 env 17.2 ± 1.4 15.8 35.0 1.00
mise env 18.0 ± 1.4 16.6 36.7 1.05 ± 0.12

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 hook-env 17.9 ± 0.6 16.5 20.8 1.00
mise hook-env 18.2 ± 0.5 17.2 21.4 1.02 ± 0.04

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.28 ls 15.9 ± 0.5 15.1 23.8 1.00
mise ls 16.7 ± 0.5 15.6 18.3 1.05 ± 0.05

xtasks/test/perf

Command mise-2026.4.28 mise Variance
install (cached) 116ms 118ms -1%
ls (cached) 65ms 67ms -2%
bin-paths (cached) 67ms 68ms -1%
task-ls (cached) 715ms 707ms +1%

mise-en-dev added a commit that referenced this pull request May 3, 2026
### 🚀 Features

- **(conda)** graduate conda backend out of experimental by @jdx in
[#9544](#9544)
- **(deps)** Add dart and flutter providers by @tjarvstrand in
[#9505](#9505)
- **(registry)** add neo4j by @mnm364 in
[#9525](#9525)
- **(registry)** add rustfs by @mnm364 in
[#9530](#9530)
- **(task)** support exclusion patterns in task sources by
@jlarmstrongiv in [#9496](#9496)
- **(vfox)** add stat function to lua file module by @esteve in
[#9497](#9497)

### 🐛 Bug Fixes

- **(backend)** flag regex prerelease versions by @jdx in
[#9500](#9500)
- **(backend)** mark -nightly/-canary/-experimental as prereleases by
@jdx in [#9523](#9523)
- **(backend)** suppress no-versions warning for unresolved-latest
backends by @jdx in [#9548](#9548)
- **(backend)** include dotnet prereleases from package flags by @jdx in
[#9551](#9551)
- **(backend)** scope PEP 440 prerelease detection to Python backends by
@jdx in [#9558](#9558)
- **(cargo)** Apply install_env during cargo install by @c22 in
[#9502](#9502)
- **(copr)** drop epel-9 chroots since rust >= 1.91 is unavailable by
@jdx in [#9484](#9484)
- **(github)** skip attestations on non-default api_url by @jdx in
[#9486](#9486)
- **(github)** retry ip allow list errors without auth by @risu729 in
[#9506](#9506)
- **(http)** update versions host tracking endpoint by @jdx in
[#9527](#9527)
- **(install)** don't warn for configured tools when version is passed
via CLI by @jdx in [#9522](#9522)
- **(install)** refresh latest before installing missing tools by @jdx
in [#9545](#9545)
- **(install)** don't cache nonexistent install paths by @jdx in
[#9553](#9553)
- **(lockfile)** don't propagate ad-hoc CLI overrides into the project
lockfile by @jdx in [#9562](#9562)
- **(plugin)** detect plugin types after cloning by @risu729 in
[#9540](#9540)
- **(release)** pass --no-git-checks to aube publish by @jdx in
[#9483](#9483)
- **(task)** convert PATH to MSYS Unix form when spawning POSIX shells
on Windows by @JamBalaya56562 in
[#9547](#9547)

### 📚 Documentation

- **(contributing)** require popularity check for registry PRs by @jdx
in
[7bbeebe](7bbeebe)
- **(watch)** update pitchfork domain to en.dev by @risu729 in
[#9536](#9536)
- document ghtkn GitHub token setup by @jdx in
[#9546](#9546)
- clarify registry backend acceptance policy by @jdx in
[#9543](#9543)
- Change exec command to use bash for variable echo by @kuboon in
[#9567](#9567)

### 🧪 Testing

- **(e2e)** run test-tool targets in parallel by @jdx in
[#9564](#9564)
- **(e2e)** run tests in parallel by @jdx in
[#9563](#9563)
- **(e2e)** bind-mount /tmp on disk and surface failed tests in CI
summary by @jdx in [#9570](#9570)
- **(tasks)** migrate test_task_help atask to usage field by @jdx in
[#9549](#9549)

### 📦️ Dependency Updates

- update fedora:45 docker digest to 8b838b3 by @renovate[bot] in
[#9507](#9507)
- update ghcr.io/jdx/mise:deb docker digest to f02194c by @renovate[bot]
in [#9509](#9509)
- update taiki-e/install-action digest to 7769b73 by @renovate[bot] in
[#9512](#9512)
- update ghcr.io/jdx/mise:alpine docker digest to 581f8a8 by
@renovate[bot] in [#9508](#9508)
- update rust crate ctor to v0.10.1 by @renovate[bot] in
[#9515](#9515)
- update ghcr.io/jdx/mise:rpm docker digest to a5c9655 by @renovate[bot]
in [#9510](#9510)
- update rust docker digest to a9cfb75 by @renovate[bot] in
[#9511](#9511)
- update rust crate age to v0.11.3 by @renovate[bot] in
[#9514](#9514)
- update rust crate jiff to v0.2.24 by @renovate[bot] in
[#9516](#9516)
- update dependency vitepress-plugin-tabs to ^0.9.0 by @renovate[bot] in
[#9518](#9518)
- update autofix-ci/action action to v1.3.4 by @renovate[bot] in
[#9513](#9513)
- update rust crate usage-lib to v3.2.1 by @renovate[bot] in
[#9517](#9517)
- update apple-actions/import-codesign-certs action to v7 by
@renovate[bot] in [#9519](#9519)
- update taiki-e/install-action digest to 51cd0b8 by @renovate[bot] in
[#9531](#9531)
- exclude taiki-e/install-action from renovate by @jdx in
[#9532](#9532)
- update rust crate blake3 to v1.8.5 by @renovate[bot] in
[#9533](#9533)

### 📦 Registry

- enable shellcheck on windows by @zeitlinger in
[#9487](#9487)
- add google-java-format by @zeitlinger in
[#9488](#9488)
- add expert
([aqua:expert-lsp/expert](https://github.com/expert-lsp/expert)) by
@AlternateRT in [#9498](#9498)
- update entry for checkmake by @eread in
[#9504](#9504)
- add systemctl-tui
([aqua:rgwood/systemctl-tui](https://github.com/rgwood/systemctl-tui))
by @2xdevv in [#9521](#9521)
- add codon by @3w36zj6 in
[#9538](#9538)
- add tool yr (backend:github:VirusTotal/yara-x) by @adam-moss in
[#9542](#9542)
- add tool betterleaks (backend:aqua/betterleaks/betterleaks) by
@adam-moss in [#9541](#9541)
- add `git-filter-repo` by @garysassano in
[#9550](#9550)
- add umoci
([aqua:opencontainers/umoci](https://github.com/opencontainers/umoci))
by @2xdevv in [#9555](#9555)
- add aqua backend for elixir-ls by @AlternateRT in
[#9557](#9557)
- deny inline backend options by @risu729 in
[#9565](#9565)

### Chore

- **(ci)** fail registry tests without summary by @jdx in
[#9559](#9559)
- **(ci)** use !cancelled() instead of always() for test-ci aggregator
by @jdx in [#9569](#9569)
- **(ci)** use namespace runners for ci jobs by @jdx in
[#9561](#9561)
- **(config)** deprecate shorthands_file setting by @risu729 in
[#9534](#9534)
- **(docs)** remove shrill.en.dev analytics script by @jdx in
[#9539](#9539)
- **(release)** replace bc with awk in release-plz star formatting by
@jdx in
[d7f177f](d7f177f)
- bump hk to 1.44.3 by @jdx in
[#9493](#9493)
- invert CLAUDE.md/AGENTS.md so AGENTS.md is canonical by @jdx in
[#9560](#9560)
- set dev profile debug to 1 by @jdx in
[#9572](#9572)

### New Contributors

- @kuboon made their first contribution in
[#9567](#9567)
- @AlternateRT made their first contribution in
[#9557](#9557)
- @2xdevv made their first contribution in
[#9555](#9555)
- @adam-moss made their first contribution in
[#9541](#9541)
- @jlarmstrongiv made their first contribution in
[#9496](#9496)
- @tjarvstrand made their first contribution in
[#9505](#9505)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant