vscode/test/unit
Connor Peet 0899758dae
ipc: use vql for uint types (#167407)
* ipc: use vql for uint types

On the plane I was reverse-engineering ipc.ts to implement it in Rust
and see if we could have a "service mode" for the CLI that we could
interact with like any other vscode process.

In doing so, I noticed that numbers in the protocol--which are used at
least twice in the message header and ID--were encoded as JSON. I was
curious what benefits we'd get from encoding them as variable-length
integers instead.

It makes the message shorter, as expected. Encode/decode time are very,
very slightly lower. I'm not sure it's worth the extra complexity, but
I have included it here for your consideration.

* fixup tests
2022-12-02 15:54:36 -08:00
..
browser Revert "Increase timeout of web unit tests" (#157065) 2022-08-04 11:52:56 +02:00
electron simplify _VSCODE_NODE_MODULES util 2022-11-18 09:42:32 +01:00
node simplify _VSCODE_NODE_MODULES util 2022-11-18 09:42:32 +01:00
assert.js Move assert.js into test/unit 2020-02-07 12:32:06 +01:00
coverage.js fix: parse errors in coverage command (#156837) 2022-08-05 18:27:40 +02:00
fullJsonStreamReporter.js Fixes #141994: Address eslint problems 2022-02-02 13:18:12 +01:00
README.md ipc: use vql for uint types (#167407) 2022-12-02 15:54:36 -08:00
reporter.js auto-fixed prefer-const violation 2022-06-08 17:49:21 +02:00

Unit Tests

Run (inside Electron)

./scripts/test.[sh|bat]

All unit tests are run inside a electron-browser environment which access to DOM and Nodejs api. This is the closest to the environment in which VS Code itself ships. Notes:

  • use the --debug to see an electron window with dev tools which allows for debugging
  • to run only a subset of tests use the --run or --glob options
  • use yarn watch to automatically compile changes

For instance, ./scripts/test.sh --debug --glob **/extHost*.test.js runs all tests from extHost-files and enables you to debug them.

Run (inside browser)

yarn test-browser --browser webkit --browser chromium

Unit tests from layers common and browser are run inside chromium, webkit, and (soon'ish) firefox (using playwright). This complements our electron-based unit test runner and adds more coverage of supported platforms. Notes:

  • these tests are part of the continuous build, that means you might have test failures that only happen with webkit on windows or chromium on linux
  • you can run these tests locally via yarn test-browser --browser chromium --browser webkit
  • to debug, open <vscode>/test/unit/browser/renderer.html inside a browser and use the ?m=<amd_module>-query to specify what AMD module to load, e.g file:///Users/jrieken/Code/vscode/test/unit/browser/renderer.html?m=vs/base/test/common/strings.test runs all tests from strings.test.ts
  • to run only a subset of tests use the --run or --glob options

Note: you can enable verbose logging of playwright library by setting a DEBUG environment variable before running the tests (https://playwright.dev/docs/debug#verbose-api-logs)

Run (with node)

yarn test-node --run src/vs/editor/test/browser/controller/cursor.test.ts

Coverage

The following command will create a coverage folder in the .build folder at the root of the workspace:

OS X and Linux

./scripts/test.sh --coverage

Windows

scripts\test --coverage