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

Add windows to travis #10249

Merged
merged 20 commits into from Sep 26, 2019
Merged
Show file tree
Hide file tree
Changes from 18 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
20 changes: 15 additions & 5 deletions .travis.yml
Expand Up @@ -3,12 +3,15 @@ git:
language: node_js
cache:
yarn: true

os: linux

node_js:
# We test the latest version on circleci
- '11'
- '10'
- '8'
- '6'
- "11"
- "10"
- "8"
- "6"

env:
global:
Expand All @@ -20,10 +23,11 @@ before_install:

install:
# the `make test-ci` script runs this command already
- if [ "$JOB" != "test" ] && [ "$JOB" != "lint" ]; then yarn install; fi
- if [ "$JOB" != "test" ] && [ "$JOB" != "test" ] && [ "$JOB" != "lint" ]; then yarn install; fi
JLHwung marked this conversation as resolved.
Show resolved Hide resolved
- if [ "$JOB" = "lint" ]; then make bootstrap; fi

before_script:
- if [ "$TRAVIS_OS_NAME" = "windows" ]; then choco install make; fi
- if [ "$JOB" = "babel-parser-flow-tests" ]; then make bootstrap-flow; fi
- if [ "$JOB" = "babel-parser-test262-tests" ]; then make bootstrap-test262; fi

Expand All @@ -36,6 +40,12 @@ script:
matrix:
fast_finish: true
include:
- os: windows
node_js: "node"
env:
- JOB=test
# https://travis-ci.community/t/build-doesnt-finish-after-completing-tests/288/9
- YARN_GPG=no
- node_js: "node"
env: JOB=lint
- node_js: "node"
Expand Down
67 changes: 36 additions & 31 deletions Makefile
Expand Up @@ -10,30 +10,30 @@ SOURCES = packages codemods
.PHONY: build build-dist watch lint fix clean test-clean test-only test test-ci publish bootstrap

build: clean clean-lib
./node_modules/.bin/gulp build
node ./packages/babel-standalone/scripts/generate.js
node ./packages/babel-types/scripts/generateTypeHelpers.js
yarn gulp build
node packages/babel-standalone/scripts/generate.js
node packages/babel-types/scripts/generateTypeHelpers.js
# call build again as the generated files might need to be compiled again.
./node_modules/.bin/gulp build
yarn gulp build
# generate flow and typescript typings
node packages/babel-types/scripts/generators/flow.js > ./packages/babel-types/lib/index.js.flow
node packages/babel-types/scripts/generators/typescript.js > ./packages/babel-types/lib/index.d.ts
node packages/babel-types/scripts/generators/flow.js > packages/babel-types/lib/index.js.flow
node packages/babel-types/scripts/generators/typescript.js > packages/babel-types/lib/index.d.ts
ifneq ("$(BABEL_COVERAGE)", "true")
make build-standalone
make build-preset-env-standalone
endif

build-standalone:
./node_modules/.bin/gulp build-babel-standalone
yarn gulp build-babel-standalone

build-preset-env-standalone:
./node_modules/.bin/gulp build-babel-preset-env-standalone
yarn gulp build-babel-preset-env-standalone

prepublish-build-standalone:
BABEL_ENV=production IS_PUBLISH=true ./node_modules/.bin/gulp build-babel-standalone
BABEL_ENV=production IS_PUBLISH=true yarn gulp build-babel-standalone

prepublish-build-preset-env-standalone:
BABEL_ENV=production IS_PUBLISH=true ./node_modules/.bin/gulp build-babel-preset-env-standalone
BABEL_ENV=production IS_PUBLISH=true yarn gulp build-babel-preset-env-standalone

build-dist: build
cd packages/babel-polyfill; \
Expand All @@ -45,28 +45,28 @@ watch: clean clean-lib

# Ensure that build artifacts for types are created during local
# development too.
BABEL_ENV=development ./node_modules/.bin/gulp build-no-bundle
node ./packages/babel-types/scripts/generateTypeHelpers.js
node packages/babel-types/scripts/generators/flow.js > ./packages/babel-types/lib/index.js.flow
node packages/babel-types/scripts/generators/typescript.js > ./packages/babel-types/lib/index.d.ts
BABEL_ENV=development ./node_modules/.bin/gulp watch
BABEL_ENV=development yarn gulp build-no-bundle
node packages/babel-types/scripts/generateTypeHelpers.js
node packages/babel-types/scripts/generators/flow.js > packages/babel-types/lib/index.js.flow
node packages/babel-types/scripts/generators/typescript.js > packages/babel-types/lib/index.d.ts
BABEL_ENV=development yarn gulp watch

flow:
./node_modules/.bin/flow check --strip-root
yarn flow check --strip-root

lint: lint-js lint-ts

lint-js:
./node_modules/.bin/eslint scripts $(SOURCES) '*.js' --format=codeframe
yarn eslint scripts $(SOURCES) '*.js' --format=codeframe

lint-ts:
./scripts/tests/typescript/lint.sh
scripts/tests/typescript/lint.sh

fix: fix-json
./node_modules/.bin/eslint scripts $(SOURCES) '*.js' --format=codeframe --fix
yarn eslint scripts $(SOURCES) '*.js' --format=codeframe --fix

fix-json:
./node_modules/.bin/prettier "{packages,codemod}/*/test/fixtures/**/options.json" --write --loglevel warn
yarn prettier "{packages,codemod}/*/test/fixtures/**/options.json" --write --loglevel warn

clean: test-clean
rm -f .npmrc
Expand All @@ -79,24 +79,28 @@ test-clean:
$(foreach source, $(SOURCES), \
$(call clean-source-test, $(source)))

# Does not work on Windows; use "yarn jest" instead
test-only:
BABEL_ENV=test ./scripts/test.sh
make test-clean

test: lint test-only

test-ci: bootstrap test-only
test-ci: bootstrap
BABEL_ENV=test yarn jest --maxWorkers=4 --ci
make test-clean

# Does not work on Windows
test-ci-coverage: SHELL:=/bin/bash
test-ci-coverage:
BABEL_COVERAGE=true BABEL_ENV=test make bootstrap
BABEL_ENV=test TEST_TYPE=cov ./scripts/test-cov.sh
bash <(curl -s https://codecov.io/bash) -f coverage/coverage-final.json

bootstrap-flow:
rm -rf ./build/flow
mkdir -p ./build
git clone --branch=master --single-branch --shallow-since=2018-11-01 https://github.com/facebook/flow.git ./build/flow
rm -rf build/flow
mkdir -p build
git clone --branch=master --single-branch --shallow-since=2018-11-01 https://github.com/facebook/flow.git build/flow
cd build/flow && git checkout $(FLOW_COMMIT)

test-flow:
Expand All @@ -108,9 +112,9 @@ test-flow-update-whitelist:
node scripts/tests/flow/run_babel_parser_flow_tests.js --update-whitelist

bootstrap-test262:
rm -rf ./build/test262
mkdir -p ./build
git clone --branch=master --single-branch --shallow-since=2019-01-01 https://github.com/tc39/test262.git ./build/test262
rm -rf build/test262
mkdir -p build
git clone --branch=master --single-branch --shallow-since=2019-01-01 https://github.com/tc39/test262.git build/test262
cd build/test262 && git checkout $(TEST262_COMMIT)

test-test262:
Expand All @@ -121,6 +125,7 @@ test-test262-ci: bootstrap test-test262
test-test262-update-whitelist:
node scripts/tests/test262/run_babel_parser_test262.js --update-whitelist

# Does not work on Windows
clone-license:
./scripts/clone-license.sh

Expand All @@ -139,11 +144,11 @@ prepublish:

new-version:
git pull --rebase
./node_modules/.bin/lerna version --force-publish="@babel/runtime,@babel/runtime-corejs2,@babel/runtime-corejs3,@babel/standalone,@babel/preset-env-standalone"
yarn lerna version --force-publish="@babel/runtime,@babel/runtime-corejs2,@babel/runtime-corejs3,@babel/standalone,@babel/preset-env-standalone"

# NOTE: Run make new-version first
publish: prepublish
./node_modules/.bin/lerna publish from-git --require-scripts
yarn lerna publish from-git --require-scripts
make clean

publish-ci: prepublish
Expand All @@ -153,13 +158,13 @@ else
echo "Missing NPM_TOKEN env var"
exit 1
endif
./node_modules/.bin/lerna publish from-git --require-scripts --yes
yarn lerna publish from-git --require-scripts --yes
rm -f .npmrc
make clean

bootstrap-only: clean-all
yarn --ignore-engines
./node_modules/.bin/lerna bootstrap -- --ignore-engines
yarn lerna bootstrap -- --ignore-engines

bootstrap: bootstrap-only
make build
Expand Down
@@ -0,0 +1,5 @@
{
"args": ["--filename", "test.js"],
"stderrContains": true,
"nodePlatform": ["win32"]
}
@@ -0,0 +1 @@
SyntaxError: <CWD>\test.js: Unexpected token, expected ";" (2:10)
@@ -0,0 +1,3 @@
arr.map(function () {
return $]!;
});
@@ -1,4 +1,5 @@
{
"args": ["--filename", "test.js"],
"stderrContains": true
"stderrContains": true,
"nodePlatform": ["linux", "darwin"]
}
29 changes: 27 additions & 2 deletions packages/babel-cli/test/index.js
Expand Up @@ -185,7 +185,32 @@ fs.readdirSync(fixtureLoc).forEach(function(binName) {
};

const optionsLoc = path.join(testLoc, "options.json");
if (fs.existsSync(optionsLoc)) merge(opts, require(optionsLoc));
if (fs.existsSync(optionsLoc)) {
const taskOpts = require(optionsLoc);
if (taskOpts.nodePlatform) {
let nodePlatform = taskOpts.nodePlatform;

if (
!Array.isArray(nodePlatform) &&
typeof nodePlatform !== "string"
) {
throw new Error(
`'nodePlatform' should be either string or string array: ${taskOpts.nodePlatform}`,
);
}

if (typeof nodePlatform === "string") {
nodePlatform = [nodePlatform];
}

if (!nodePlatform.includes(process.platform)) {
return;
}

delete taskOpts.nodePlatform;
}
merge(opts, taskOpts);
}

["stdout", "stdin", "stderr"].forEach(function(key) {
const loc = path.join(testLoc, key + ".txt");
Expand All @@ -205,7 +230,7 @@ fs.readdirSync(fixtureLoc).forEach(function(binName) {
opts.inFiles[".babelrc"] = helper.readFile(babelrcLoc);
}

it(testName, buildTest(binName, testName, opts));
it(testName, buildTest(binName, testName, opts), 20000);
});
});
});
25 changes: 13 additions & 12 deletions packages/babel-core/test/config-chain.js
@@ -1,5 +1,6 @@
import fs from "fs";
import path from "path";
import escapeRegExp from "lodash/escapeRegExp";
import { loadOptions as loadOptionsOrig } from "../lib";

function fixture(...args) {
Expand Down Expand Up @@ -33,7 +34,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
test: new RegExp(fixture("nonexistant-fake")),
test: new RegExp(escapeRegExp(fixture("nonexistant-fake"))),
comments: true,
});

Expand Down Expand Up @@ -69,7 +70,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
test: new RegExp(fixture("nonexistant-unknown")),
test: new RegExp(escapeRegExp(fixture("nonexistant-unknown"))),
comments: true,
});

Expand Down Expand Up @@ -107,7 +108,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
test: [new RegExp(fixture("nonexistant-fake"))],
test: [new RegExp(escapeRegExp(fixture("nonexistant-fake")))],
comments: true,
});

Expand Down Expand Up @@ -143,7 +144,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
test: [new RegExp(fixture("nonexistant-unknown"))],
test: [new RegExp(escapeRegExp(fixture("nonexistant-unknown")))],
comments: true,
});

Expand Down Expand Up @@ -183,7 +184,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
include: new RegExp(fixture("nonexistant-fake")),
include: new RegExp(escapeRegExp(fixture("nonexistant-fake"))),
comments: true,
});

Expand Down Expand Up @@ -219,7 +220,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
include: new RegExp(fixture("nonexistant-unknown")),
include: new RegExp(escapeRegExp(fixture("nonexistant-unknown"))),
comments: true,
});

Expand Down Expand Up @@ -257,7 +258,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
include: [new RegExp(fixture("nonexistant-fake"))],
include: [new RegExp(escapeRegExp(fixture("nonexistant-fake")))],
comments: true,
});

Expand Down Expand Up @@ -293,7 +294,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
include: [new RegExp(fixture("nonexistant-unknown"))],
include: [new RegExp(escapeRegExp(fixture("nonexistant-unknown")))],
comments: true,
});

Expand Down Expand Up @@ -333,7 +334,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
exclude: new RegExp(fixture("nonexistant-fake")),
exclude: new RegExp(escapeRegExp(fixture("nonexistant-fake"))),
comments: true,
});

Expand Down Expand Up @@ -369,7 +370,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
exclude: new RegExp(fixture("nonexistant-unknown")),
exclude: new RegExp(escapeRegExp(fixture("nonexistant-unknown"))),
comments: true,
});

Expand Down Expand Up @@ -407,7 +408,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
exclude: [new RegExp(fixture("nonexistant-fake"))],
exclude: [new RegExp(escapeRegExp(fixture("nonexistant-fake")))],
comments: true,
});

Expand Down Expand Up @@ -443,7 +444,7 @@ describe("buildConfigChain", function() {
cwd: fixture("nonexistant-fake"),
filename: fixture("nonexistant-fake", "src.js"),
babelrc: false,
exclude: [new RegExp(fixture("nonexistant-unknown"))],
exclude: [new RegExp(escapeRegExp(fixture("nonexistant-unknown")))],
comments: true,
});

Expand Down