ava
ava copied to clipboard
Line number parser doesn't utilize @ava/typescript's compilation output
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
If this issue is still open and not resolved (since it has been created in 2022), I would like to work on it.
@Acroucamp Go for it!
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.
Thanks Mark, appreciate it!
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.