ava icon indicating copy to clipboard operation
ava copied to clipboard

Line number parser doesn't utilize @ava/typescript's compilation output

Open novemberborn opened this issue 3 years ago • 5 comments

Line number selection doesn't use the @ava/typescript provider to resolve the compiled JS file. This means it's parsing the actual TypeScript file which is not supported:

https://github.com/avajs/ava/blob/ac0d75d05d28e511b1b3654b09d11d602e360179/lib/worker/base.js#L42-L51

We'd need to amend the worker interface to make the file resolver available:

https://github.com/avajs/typescript/blob/34da7bf008bd94e4844562ed86f5446faae6c087/index.js#L152-L168

This requires a new protocol identifier, and the file resolver should only be called if available to retain compatibility with the current @ava/typescript version. I can explain more when we get to this point:

https://github.com/avajs/ava/blob/ac0d75d05d28e511b1b3654b09d11d602e360179/lib/provider-manager.js#L12-L14

We can then install the providers earlier:

https://github.com/avajs/ava/blob/ac0d75d05d28e511b1b3654b09d11d602e360179/lib/worker/base.js#L123-L132

novemberborn avatar Jul 10 '22 12:07 novemberborn

If this issue is still open and not resolved (since it has been created in 2022), I would like to work on it.

Acroucamp avatar Dec 04 '24 10:12 Acroucamp

@Acroucamp Go for it!

novemberborn avatar Dec 04 '24 11:12 novemberborn

Another approach may be to strip the TypeScript types from the files and then use the existing logic, but that depends on whether the generated JS has the same line numbers for test() declarations as the TypeScript file.

novemberborn avatar Dec 09 '24 13:12 novemberborn

Thanks Mark, appreciate it!

Acroucamp avatar Dec 09 '24 17:12 Acroucamp

Yet another approach, have @ava/typescript do the parsing using typescript as a peer dependency and using their API. All AVA really needs is start and end positions of the test functions. When running the tests, call sites with source maps should already map back cleanly.

novemberborn avatar Dec 09 '24 20:12 novemberborn