Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add projects to test typescript support with different compiler options #4597

Open
wants to merge 8 commits into
base: dev
Choose a base branch
from

Conversation

JesusTheHun
Copy link

@JesusTheHun JesusTheHun commented Apr 17, 2024

Following #4218, this PR adds three test projects that use ESM and CJS with npm and one that uses ESM with pnpm.

The projects are compiled with different typescript compiler options to ensure compatibility.

This PR focuses on testing that antlr4 can be imported in TS projects. This is why it does not include non-TS test projects.

Signed-off-by: Jonathan MASSUCHETTI <jonathan.massuchetti@dappit.fr>
Signed-off-by: Jonathan MASSUCHETTI <jonathan.massuchetti@dappit.fr>
@JesusTheHun JesusTheHun force-pushed the test/typescript-compiler-options branch from 613ff23 to 2d2b26c Compare April 17, 2024 14:46
runtime/JavaScript/spec/imports/setups/node-cjs-ts/test.sh Outdated Show resolved Hide resolved
runtime/JavaScript/spec/imports/setups/node-esm-ts/test.sh Outdated Show resolved Hide resolved
runtime/JavaScript/package.json Outdated Show resolved Hide resolved
@ericvergnaud
Copy link
Contributor

Looks like the tests fail ?
See for example https://github.com/antlr/antlr4/actions/runs/8723991967/job/23933679496?pr=4597

Signed-off-by: Jonathan MASSUCHETTI <jonathan.massuchetti@dappit.fr>
…son "types" fields

Signed-off-by: Jonathan MASSUCHETTI <jonathan.massuchetti@dappit.fr>
@JesusTheHun
Copy link
Author

Looks like the tests fail ? See for example https://github.com/antlr/antlr4/actions/runs/8723991967/job/23933679496?pr=4597

I fail to run the tests locally using maven. I haven't touch to java in a while so I'm a bit rusty at identifying compilation chain issues 😅
In addition to the requested changes I've committed a fix, hopefully the one we need.

Copy link
Contributor

@ericvergnaud ericvergnaud left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixes the failing tests, but not sure it satisfies the requirement to test against the built package (vs the source project)

"author": "",
"license": "ISC",
"dependencies": {
"antlr4": "file:../../../.."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't we be using a local build rather than the source folder ?

"author": "",
"license": "ISC",
"dependencies": {
"antlr4": "file:../../../.."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shouldn't we be using a local build rather than the source folder ?

@JesusTheHun
Copy link
Author

JesusTheHun commented Apr 18, 2024

Fixes the failing tests, but not sure it satisfies the requirement to test against the built package (vs the source project)

I was hesitant to test against the build because that would require to compile every time you make a change, which is annoying during development. But I can make the change if you want. It is safer indeed.

EDIT : your build process bundle the javascript, but do not include the type definitions. So we would have to use npm pack, extract the archive, and use the directory at the package path.
That being said, what is tested really is the declaration of types definition, which only targets the package.json really. Assuming the referenced files exist. Before my latest commits they did not, and the build failed. So I say the tests served their purpose 👍

@JesusTheHun
Copy link
Author

@ericvergnaud just pinging in case you didn't see my edit above

@ericvergnaud
Copy link
Contributor

ericvergnaud commented Apr 18, 2024

@ericvergnaud just pinging in case you didn't see my edit above

Ah I see what you mean. But how can we be sure that your test samples are using the dist folder ?

@JesusTheHun
Copy link
Author

JesusTheHun commented Apr 18, 2024

Ah I see what you mean. But how can we be sure that your test samples are using the dist folder ?

The test uses the package.json. The package.json references the dist folder for the javascript, and the src for the type definitions.

EDIT : to clarify, npm pack is the command that create the archive that is published. It copies the package.json as-is, so our tests have the exact same conditions.

Signed-off-by: Jonathan MASSUCHETTI <jonathan.massuchetti@dappit.fr>
Signed-off-by: Jonathan MASSUCHETTI <jonathan.massuchetti@dappit.fr>
Signed-off-by: Jonathan MASSUCHETTI <jonathan.massuchetti@dappit.fr>
Signed-off-by: Jonathan MASSUCHETTI <jonathan.massuchetti@dappit.fr>
@JesusTheHun
Copy link
Author

JesusTheHun commented May 1, 2024

@ericvergnaud after migrating the project using this lib to pnpm, I noticed the types stopped to work altogether. After looking around I noticed that the imports inside the definition files did not include the file extension, which is required for modern node usage.

EDIT : for anyone following this topic, I've published a package that reflect the changes on this branch : https://www.npmjs.com/package/@cbjsdev/antlr4 . Install the latest version 4.13.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants