Skip to content

Commit

Permalink
Add windows to travis (#10249)
Browse files Browse the repository at this point in the history
* Add windows to travis

* Update

* Do not use sh file on windows

* Fix whitespace

* Unify command

* ./ doesn't work on windows

* Remove all ./ usages

* Run windows test before others

* fix: normalize filename when generating sources

sources should be URL.

* fix: replace normalized path to cwd

* chore: add nodePlatform task options

* fix: normalize preset-env filename output

* chore: replace normalized path to CWD on win32 platform

* limit transform-react-source to run on linux and darwin

* test: escapeRegExp on testcases

* test: add test for babel --filename on windows

* test: double babel-node/cli test timeout

* chore: workaround windows build does not stop

* chore: remove redundant condition

* refactor: rename `nodePlatform` to `os`
  • Loading branch information
nicolo-ribaudo committed Sep 26, 2019
1 parent 66062c2 commit b459f6a
Show file tree
Hide file tree
Showing 21 changed files with 197 additions and 59 deletions.
18 changes: 14 additions & 4 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 @@ -24,6 +27,7 @@ install:
- 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,
"os": ["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,
"os": ["linux", "darwin"]
}
26 changes: 24 additions & 2 deletions packages/babel-cli/test/index.js
Expand Up @@ -185,7 +185,29 @@ 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.os) {
let os = taskOpts.os;

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

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

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

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

["stdout", "stdin", "stderr"].forEach(function(key) {
const loc = path.join(testLoc, key + ".txt");
Expand All @@ -205,7 +227,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

0 comments on commit b459f6a

Please sign in to comment.