This repo is used to run integration test on the Rascal typechecker. Its goal is to identify regressions with a new version of typechecker (maybe caused by interpreter/typepal/stdlib changes) when typechecking Rascal code without making any intermediate releases. The goal is to identify issues before we're in some kind of bootstrap cycle or a regular release process.
To be clear, currently it's only for the typechecker:
- It does not test the compiler or its generated code.
- It does not test the tpls and its compatibility. It explicitly ignores any tpls in any jars.
- It does not test the tutor generator.
Note: Beside typechecking, the only tests that are run are the rename tests in rascal-lsp (because they themselves run the typechecker as well).
To start a new run, do, go to this page: Integration Test actions and click the button in the right top corner for "Run workflow".
The intergration test checks out libraries based on the configuration in the projects global variable in the src/main/rascal/Main.rsc file. However, for some scenarios you can override that. The following section describes how you can override this.
The integration test has some parameters that are a bit complex to use, so this section will discuss a few common scenarios and how to use the parameters. The end goal of the parameters is to configure the following assets:
| Asset | Explained | Controlled by |
|---|---|---|
| rascal.jar | the rascal.jar that gets build. Contains the stdlib and typechecker used | $rascal_branch_build |
| typepal.jar | the typepal.jar that gets packaged into rascal.jar | rascal/pom.xml or $typepal_branch_build |
| rascal-stdlib | the standard lib that is typechecked and used to typecheck all the downstream libraries | Main.rsc or $rascal_branch_check |
| typepal | the Typepal version that is typechecked during the typechecking of libraries | Main.rsc or $typepal_branch_check |
| rascal-all | the version of the Rascal compiler that is typechecked by rascal.jar. |
rascal.jar |
| typepal-copy | the Typepal version that is copied into rascal-all. | typepal.jar |
| rascal-lsp-all | the version of rename code in rascal-lsp (that uses the Rascal compiler) that is typechecked by rascal.jar |
Main.rsc or $rascal-lsp-all |
There are changes in the Rascal project (in a PR) that might influence the typechecker. It has no changes in Typepal that aren't released yet.
- set the
rascal_branch_buildparameter to the branch you want to check
| Asset | Version |
|---|---|
| rascal.jar | $rascal_branch_build |
| typepal.jar | extracted from rascal/pom.xml in $rascal_branch_build, is assumed to be released |
| rascal-stdlib | branch configured in Main.rsc |
| typepal | branch configured in Main.rsc |
| rascal-all | same as rascal.jar |
| typepal-copy | same as typepal.jar |
| rascal-lsp-all | branch configured in Main.rsc |
There are changes in both the Rascal project and the Typepal project that might influence the typechecker.
- Set
rascal_branch_build - Set
typepal_branch_build
Setting typepal_branch_build will override the Typepal dependency in the rascal/pom.xml, and build it locally before building rascal.jar
| Asset | Version |
|---|---|
| rascal.jar | $rascal_branch_build |
| typepal.jar | $typepal_branch_build |
| rascal-stdlib | branch configured in Main.rsc |
| typepal | branch configured in Main.rsc |
| rascal-all | same as rascal.jar |
| typepal-copy | same as typepal.jar |
| rascal-lsp-all | branch configured in Main.rsc |
There are changes in the Rascal project that might influence the typechecker. And it requires changes in rascal-lsp rename code.
- Set
rascal_branch_build - Set
rascal_lsp_all_branch_check
| Asset | Version |
|---|---|
| rascal.jar | $rascal_branch_build |
| typepal.jar | $typepal_branch_build |
| rascal-stdlib | branch configured in Main.rsc |
| typepal | branch configured in Main.rsc |
| rascal-all | same as rascal.jar |
| typepal-copy | same as typepal.jar |
| rascal-lsp-all | $rascal_lsp_all_branch_check |
There are changes in both the Rascal and the Typepal project that might influence the typechecker. And the new typechecker also requires changes in the stdlib, and thus before merging would take a bootstrap cycle (or an intermediate release without tpls).
- Set
rascal_branch_build - Set
typepal_branch_build - Set
rascal_branch_check - Set
typepal_branch_check. - Optionally you'll also need to set
rascal_lsp_all_branch_check, if the changes propagate that far
Setting typepal_branch_build will override the Typepal dependency in rascal/pom.xml, and build it locally before building rascal.jar
| Asset | Version |
|---|---|
| rascal.jar | $rascal_branch_build |
| typepal.jar | $typepal_branch_build |
| rascal-stdlib | $rascal_branch_check |
| typepal | $typepal_branch_check |
| rascal-all | same as rascal.jar |
| typepal-copy | same as typepal.jar |
| rascal-lsp-all | branch configured in Main.rsc or $rascal_lsp_all_branch_check |