avajs / ava

Node.js test runner that lets you develop with confidence 🚀
MIT License
20.72k stars 1.41k forks source link

`pattern` CLI option Path Expansion #3206

Open shellscape opened 1 year ago

shellscape commented 1 year ago

Please provide details about:

pnpm exec ava ~/code/tests

This results in an error: Expected pattern to be a non-empty string

The error is both incorrect and unfortunate. The pattern passed was not empty, ava just didn't know what to do with it.

Oodles of tertiary tooling will provide paths with a leading tilde. However correct or incorrect that is, it would be useful for local tooling to be able to leverage a tilde as a home directory path.

Execute a resolve on the passed pattern if it doesn't match any of the other expected shapes, or begins with a tilde.

→ node
Welcome to Node.js v18.15.0.
Type ".help" for more information.
> const { resolve } = require('path')
undefined
> resolve('~')
'/Users/user/code/test/~'
shellscape commented 1 year ago

Related to this:

novemberborn commented 1 year ago

Do you have a stack trace for that error?

The pattern is resolved against to the current working directory and then made relative against the project directory:

https://github.com/avajs/ava/blob/63987725957114ea92dab430b7795ecc649ff107/lib/cli.js#L419

However it doesn't look like that expands the ~.

I'd expect absolute paths to be resolved, however (as I recall) AVA cannot run test files outside of the project directory. Perhaps that could be communicated better.

Local paths really should work.

shellscape commented 1 year ago

I'll be doing some additional testing today for a related moon issue and will grab a stack trace then.