Throw when loading a TypeScript file that is not covered by the rewrite paths
This is more like an anti-bug than an actual bug. But it seems like this project works even when I provide a nonsensical rewritePaths entry, for example:
"typescript": {
"rewritePaths": {
"meaninglessdirectory/": "jababababa/"
}
},
Shouldn't ava crash if this occurs?
Here's the repository ("ava" branch): https://github.com/vedantroy/typecheck.macro
Check out the repository, switch to the ava branch, and then run npm i && npm run test.
What happens The tests run successfully. You can show that ava is not using the js file by renaming temp_build/test.js to temp_build/foobar.js and then executing npm run test:run. The tests will still execute. You can even modify tests/test.ts, maybe add an extra console.log statement, then run npm run test:run, and the new output will be printed. Does ava now support typescript natively, or am I missing something?
What you expected to happen: Ava should crash or something because inside of my package.json, I have a meaningless typescript configuration.
Ava version: 3.7.1
Oh this is interesting!
It works… because tests/test.ts is valid JavaScript. As soon as you put some TypeScript syntax in there it crashes.
This line stops the TypeProvider from being the one to load the test file:
https://github.com/avajs/typescript/blob/058b5be55ed5f846f71494c2f105c6bd6fdd3fc3/index.js#L118
I think maybe canLoad() should return true as long as the extension matches, but then in load() if we can't find a rewrite path we should throw an error:
https://github.com/avajs/typescript/blob/058b5be55ed5f846f71494c2f105c6bd6fdd3fc3/index.js#L128
And then we can state that all selected TypeScript test files must be covered by the rewrite paths.
What do you think @vedantroy?
I think that's a good idea! Doing extra checks is preferable to letting things work by accident :relaxed:
I would try submitting a PR for this, but unfortunately I'm a bit busy at the moment.