Skip to content

Commit

Permalink
Automatically generate missing expected.js fixtures
Browse files Browse the repository at this point in the history
This is much like Babylon's existing behavior around `expected.json`. The equivalent of babel/babylon#188 is already applied here, to guard against silent failure (and a potential false positive) if a test is accidentally committed without its expected.js.
  • Loading branch information
motiz88 committed Oct 16, 2016
1 parent 2dc919d commit 290fda2
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,9 @@ If you need to check for an error that is thrown you can add to the `options.jso
}
```

##### `babylon`
##### Bootstrapping expected output

For `babylon` specifically, you can easily generate an `expected.json` automatically by just providing the `actual.js` and running `make test-only` as you usually would.
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.

```
// Example
Expand Down
14 changes: 7 additions & 7 deletions packages/babel-helper-transform-fixture-test-runner/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import assert from "assert";
import chai from "chai";
import _ from "lodash";
import "babel-polyfill";
import fs from "fs";
import path from "path";

let babelHelpers = eval(buildExternalHelpers(null, "var"));

Expand Down Expand Up @@ -63,14 +65,12 @@ function run(task) {
let actualCode = actual.code;
let expectCode = expect.code;
if (!execCode || actualCode) {
result = babel.transform(actualCode, getOpts(actual));
actualCode = result.code.trim();

try {
result = babel.transform(actualCode, getOpts(actual));
if (!expect.code && result.code && !opts.throws && fs.statSync(path.dirname(expect.loc)).isDirectory() && !process.env.CI) {
fs.writeFileSync(expect.loc, result.code);
} else {
actualCode = result.code.trim();
chai.expect(actualCode).to.be.equal(expectCode, actual.loc + " !== " + expect.loc);
} catch (err) {
//require("fs").writeFileSync(expect.loc, actualCode);
throw err;
}
}

Expand Down

0 comments on commit 290fda2

Please sign in to comment.