Automatically generate missing expected.js fixtures (#4735)
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.
This commit is contained in:
parent
478bba0ade
commit
b8eeddf960
@ -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
|
// Example
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import assert from "assert";
|
|||||||
import chai from "chai";
|
import chai from "chai";
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import "babel-polyfill";
|
import "babel-polyfill";
|
||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
let babelHelpers = eval(buildExternalHelpers(null, "var"));
|
let babelHelpers = eval(buildExternalHelpers(null, "var"));
|
||||||
|
|
||||||
@ -64,13 +66,11 @@ function run(task) {
|
|||||||
let expectCode = expect.code;
|
let expectCode = expect.code;
|
||||||
if (!execCode || actualCode) {
|
if (!execCode || actualCode) {
|
||||||
result = babel.transform(actualCode, getOpts(actual));
|
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();
|
actualCode = result.code.trim();
|
||||||
|
|
||||||
try {
|
|
||||||
chai.expect(actualCode).to.be.equal(expectCode, actual.loc + " !== " + expect.loc);
|
chai.expect(actualCode).to.be.equal(expectCode, actual.loc + " !== " + expect.loc);
|
||||||
} catch (err) {
|
|
||||||
//require("fs").writeFileSync(expect.loc, actualCode);
|
|
||||||
throw err;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user