<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->
Makes the Compiler Explorer app, and all the tooling ESM compatible.
Things that have been done:
1. The package.json has `type: module` now
2. All relative imports have a .js ending
3. All directory imports are now directory/index.js to comply with ESM
standards
4. Dependency node-graceful is now imported into tree, because the
package is broken under esm
5. Dependency p-queue has been bumped to 7.x with ESM support
6. Dependency profanities has been bumped to 3.x with ESM support
7. Webpack config is now both ESM and CommonJS compatible
8. Non-ESM compatible imports have been rewritten
9. ESLint configuration has been tweaked to not fail on .js imports
10. Mocha is now hacked together and ran with ts-node-esm
11. Webpack is now hacked together and ran with ts-node-esm
12. Webpack config is now ESM compatible, so that it can be used in the
dev server
13. Cypress code still runs commonjs, and has been excluded from the
tsconfig
14. All sinon mock tests have been commented out, because sinon module
mocks do not work with ESModules (because ESModules are immutable)
A lot of tests are now giving warnings/errors to stdout, yet still pass.
Docenizer codegenerator scripts have been updated, but I did not re-run
them, and instead just changed their code.
---------
Co-authored-by: Matt Godbolt <matt@godbolt.org>
* Adds configs for nsjail cfg and firejail profile paths
As suggested by @apmorton
Issue #2845
* Add & improve exec tests with new config changes
* Remove stub. Exports are inmutable so no replacing the internal calls
* Resort back to calling the mapping function in the tests too
* But don't call it in the one function that is testing it
* Expand reach of .local gitignore
* Address @apmorton PR review
The tests are now a mess, so I won't merge,
just in case I get shown how to do it properly
* Approval tests
Move to approvals to do the approval-style tests we had in filters-cases.
You can configure which diff viewer it uses with ~/.approvalsConfig
Pros:
* standard diff-based thing
* easy to "bless" all the differences (see `forceApproveAll`)
* fairly standard pattern
* forces a comprehensive all permutations and combinations vs
the ad hoc subset we picked before
Cons:
* really wants to name the files *.approved.txt
* spawns _all the diffs_ at once and so an overarching change
can crush your computer with diff (e.g. if you use `meld` like
I do, you end up with 100+ diffs opening)
* comprehensive testing means this takes longer, now ~16s to do
all these tests
* use latest approvals and its new settings
* Normalize line endings in the hope of getting windows passing
* fix for windows
* oops
Co-authored-by: partouf <partouf@gmail.com>
* Update docenizer to python3
* Remove unused code in docenizer
* Create new asm-docs-arm and asm-docs-api-arm files for parsing and retrieving arm related opcodes. Add conditional instruction switch.
* Rename docs files to specify instruction set
* Add arm32 at /api/asm/arm32/:opcode
* Add @jovere to contributor list
* Add `instructionSet` compiler option
* Update client to access correct instruction based on the `instructionSet` option
* Add `arm32` `instructionSet` option for ARM C++ compilers
* Add `arm32` instructionSet to obvious places in C/C++