typescript icon indicating copy to clipboard operation
typescript copied to clipboard

Throw when loading a TypeScript file that is not covered by the rewrite paths

Open vedantroy opened this issue 5 years ago • 2 comments

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

vedantroy avatar Apr 26 '20 16:04 vedantroy

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?

novemberborn avatar Apr 27 '20 10:04 novemberborn

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.

vedantroy avatar Apr 27 '20 16:04 vedantroy