diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c583a232d1..86652244f0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -175,21 +175,21 @@ For example, in [`@babel/plugin-transform-exponentiation-operator/test`](https:/ - In each subfolder, you can organize your directory structure by categories of tests. (Example: these folders can be named after the feature you are testing or can reference the issue number they fix) - Generally, there are two kinds of tests for plugins - - The first is a simple test of the input and output produced by running Babel on some code. We do this by creating an [`actual.js`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/binary/actual.js) file and an [`expected.js`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/binary/expected.js) file. - - If you need to expect an error, you can ignore creating the `expected.js` file and pass a new `throws` key to the `options.json` that contains the error string that is created. + - The first is a simple test of the input and output produced by running Babel on some code. We do this by creating an [`input.js`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/binary/input.js) file and an [`output.js`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/binary/output.js) file. + - If you need to expect an error, you can ignore creating the `output.js` file and pass a new `throws` key to the `options.json` that contains the error string that is created. - The second and preferred type is a test that actually evaluates the produced code and asserts that certain properties are true or false. We do this by creating an [`exec.js`](https://github.com/babel/babel/blob/master/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/exponentian-operator/comprehensive/exec.js) file. -In an actual/expected test, you simply write out the code you want transformed in `actual.js`. +In an actual/expected test, you simply write out the code you want transformed in `input.js`. ```js -// actual.js +// input.js 2 ** 2; ``` -and the expected output after transforming it with your `options.json` in `expected.js`. +and the expected output after transforming it with your `options.json` in `output.js`. ```js -// expected.js +// output.js Math.pow(2, 2); ``` In an `exec.js` test, we run or check that the code actually does what it's supposed to do rather than just check the static output. @@ -227,9 +227,9 @@ Inside the `packages/babylon/tests/fixtures` folder are categories/groupings of etc.). To add a test, create a folder under one of these groupings (or create a new one) with a descriptive name, and add the following: -* Create an `actual.js` file that contains the code you want Babylon to parse. +* Create an `input.js` file that contains the code you want Babylon to parse. -* Add an `expected.json` file with the expected parser output. For added convenience, if there is no `expected.json` present, the test runner will generate one for you. +* Add an `output.json` file with the expected parser output. For added convenience, if there is no `output.json` present, the test runner will generate one for you. After writing tests for babylon, just build it by running: @@ -245,7 +245,7 @@ $ TEST_ONLY=babylon make test-only #### Bootstrapping expected output -For both `@babel/plugin-x` and `babylon`, you can easily generate an `expected.js`/`expected.json` automatically by just providing `actual.js` and running the tests as you usually would. +For both `@babel/plugin-x` and `babylon`, you can easily generate an `output.js`/`output.json` automatically by just providing `input.js` and running the tests as you usually would. ``` // Example @@ -256,8 +256,8 @@ For both `@babel/plugin-x` and `babylon`, you can easily generate an `expected.j - comments - basic - block-trailing-comment - - actual.js - - expected.json (will be generated if not created) + - input.js + - output.json (will be generated if not created) ``` ### Debugging code diff --git a/packages/babel-helper-plugin-test-runner/README.md b/packages/babel-helper-plugin-test-runner/README.md index 69c80a107b..6d7ba045eb 100644 --- a/packages/babel-helper-plugin-test-runner/README.md +++ b/packages/babel-helper-plugin-test-runner/README.md @@ -8,6 +8,6 @@ 1. Inside a `/test` directory, add an `index.js` with the contents `require("@babel/helper-plugin-test-runner")(__dirname);`. 2. Inside `/test/fixtures`, create a folder for each suite (eg; one suite for each feature of your plugin). -3. Suite folders may contain files and folders. Files will be transformed and run; use `expect()` assertions to verify correct behavior. Folders may contain `actual.js`, `expected.js`, and/or `exec.js`. The output of transforming `actual.js` will be checked to match the contents of `expected.js`. `exec.js`, if it exists, will be transformed and run, as with a file in the suite folder. +3. Suite folders may contain files and folders. Files will be transformed and run; use `expect()` assertions to verify correct behavior. Folders may contain `input.js`, `output.js`, and/or `exec.js`. The output of transforming `input.js` will be checked to match the contents of `output.js`. `exec.js`, if it exists, will be transformed and run, as with a file in the suite folder. 3. Install and run `mocha`. 4. To run a specific test, run `mocha --grep testName`.