From af2b1621754a5d395520a8b8bd6ef480546d6ead Mon Sep 17 00:00:00 2001 From: Brian Ng Date: Fri, 31 Mar 2017 12:11:26 -0500 Subject: [PATCH] Add simple smoke-test (#240) --- experimental/babel-preset-env/.gitignore | 2 + experimental/babel-preset-env/.npmignore | 3 + experimental/babel-preset-env/.travis.yml | 7 +- .../babel-preset-env/scripts/smoke-test.js | 69 +++++++++++++++++++ 4 files changed, 79 insertions(+), 2 deletions(-) create mode 100755 experimental/babel-preset-env/scripts/smoke-test.js diff --git a/experimental/babel-preset-env/.gitignore b/experimental/babel-preset-env/.gitignore index c632df2afb..b8733fbb98 100644 --- a/experimental/babel-preset-env/.gitignore +++ b/experimental/babel-preset-env/.gitignore @@ -6,3 +6,5 @@ test/tmp *.log .vscode .nyc_output +tmp +babel-preset-env-*.tgz diff --git a/experimental/babel-preset-env/.npmignore b/experimental/babel-preset-env/.npmignore index af257d4817..bf67f6570e 100644 --- a/experimental/babel-preset-env/.npmignore +++ b/experimental/babel-preset-env/.npmignore @@ -6,3 +6,6 @@ scripts .travis.yml codecov.yml yarn.lock +.nyc_output +.vscode +babel-preset-env-*.tgz diff --git a/experimental/babel-preset-env/.travis.yml b/experimental/babel-preset-env/.travis.yml index 20b64eb31f..568aa88c93 100644 --- a/experimental/babel-preset-env/.travis.yml +++ b/experimental/babel-preset-env/.travis.yml @@ -27,7 +27,8 @@ install: - $PKG_CMD install script: - 'if [ -n "${LINT-}" ]; then $PKG_CMD run lint ; fi' - - 'if [ -z "${LINT-}" ]; then $PKG_CMD run test-ci ; fi' + - 'if [ -n "${SMOKE_TEST-}" ]; then node scripts/smoke-test.js ; fi' + - 'if [ -z "${LINT-}" ] && [ -z "${SMOKE_TEST-}" ]; then $PKG_CMD run test-ci ; fi' matrix: fast_finish: true exclude: @@ -38,5 +39,7 @@ matrix: include: - node_js: "node" env: LINT=true PKG_CMD="npm" + - node_js: "node" + env: SMOKE_TEST=true PKG_CMD="npm" -after_success: 'if [ -z "${LINT-}" ]; then npm run coverage-ci ; fi' +after_success: 'if [ -z "${LINT-}" ] && [ -z "${SMOKE_TEST-}" ]; then npm run coverage-ci ; fi' diff --git a/experimental/babel-preset-env/scripts/smoke-test.js b/experimental/babel-preset-env/scripts/smoke-test.js new file mode 100755 index 0000000000..f845d6da3b --- /dev/null +++ b/experimental/babel-preset-env/scripts/smoke-test.js @@ -0,0 +1,69 @@ +const fs = require("fs-extra"); +const execSync = require("child_process").execSync; +const path = require("path"); +const pkg = require("../package.json"); + +let errorOccurred = false; + +const tempFolderPath = path.join(__dirname, "../tmp"); +const packPath = path.join(__dirname, `../babel-preset-env-${pkg.version}.tgz`); + +try { + console.log("Creating package"); + execSync("npm pack"); + + console.log("Setting up smoke test"); + fs.ensureDir(tempFolderPath); + + fs.writeFileSync( + path.join(tempFolderPath, "package.json"), + ` +{ + "name": "babel-preset-env-smoke-test", + "private": true, + "version": "1.0.0", + "scripts": { + "build": "babel index.js --out-file index.es6" + }, + "dependencies": { + "babel-cli": "*", + "babel-preset-env": "${packPath}" + } +} + `); + + fs.writeFileSync( + path.join(tempFolderPath, ".babelrc"), + ` +{ + "presets": [ + ["env", { + modules: false, + useBuiltIns: true + }] + ] +} + ` + ); + + fs.writeFileSync( + path.join(tempFolderPath, "index.js"), + ` +import "babel-polyfill"; +1 ** 2; + ` + ); + + process.chdir(tempFolderPath); + + console.log("Running smoke test"); + execSync("npm install && npm run build"); +} catch (e) { + errorOccurred = true; +} + +console.log("Cleaning up"); +fs.removeSync(tempFolderPath); +fs.removeSync(packPath); + +process.exit(errorOccurred ? 1 : 0);