Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support specifying minimum Node version a test requires #5765

Merged
merged 1 commit into from May 25, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 9 additions & 0 deletions CONTRIBUTING.md
Expand Up @@ -186,6 +186,15 @@ If you need to check for an error that is thrown you can add to the `options.jso
}
```

If the test requires a minimum Node version, you can add `minNodeVersion` (must be in semver format).

```js
// options.json example
{
"minNodeVersion": "5.0.0"
}
```

#### 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.
Expand Down
3 changes: 2 additions & 1 deletion packages/babel-helper-fixtures/package.json
Expand Up @@ -8,6 +8,7 @@
"main": "lib/index.js",
"dependencies": {
"lodash": "^4.2.0",
"try-resolve": "^1.0.0"
"try-resolve": "^1.0.0",
"semver": "^5.3.0"
}
}
19 changes: 19 additions & 0 deletions packages/babel-helper-fixtures/src/index.js
Expand Up @@ -3,9 +3,12 @@ import trimEnd from "lodash/trimEnd";
import resolve from "try-resolve";
import clone from "lodash/clone";
import merge from "lodash/merge";
import semver from "semver";
import path from "path";
import fs from "fs";

const nodeVersion = semver.clean(process.version.slice(1));

function humanize(val, noext) {
if (noext) val = path.basename(val, path.extname(val));
return val.replace(/-/g, " ");
Expand Down Expand Up @@ -125,6 +128,22 @@ export default function get(entryLoc): Array<Suite> {
},
};

// If there's node requirement, check it before pushing task
if (taskOpts.minNodeVersion) {
const minimumVersion = semver.clean(taskOpts.minNodeVersion);

if (minimumVersion == null) {
throw new Error(`'minNodeVersion' has invalid semver format: ${taskOpts.minNodeVersion}`);
}

if (semver.lt(nodeVersion, minimumVersion)) {
return;
}

// Delete to avoid option validation error
delete taskOpts.minNodeVersion;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we have to delete?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If not, the test will throw Unknown option: base.minNodeVersion. I suppose we can update OptionManager to support this option, but given it's only internally used, I'm not sure if we should do that.

}

// traceur checks

if (test.exec.code.indexOf("// Async.") >= 0) {
Expand Down