From 4065a15692631a92ef9ed46fb179214c3ef90c55 Mon Sep 17 00:00:00 2001 From: Giancarlo Anemone Date: Wed, 31 Jan 2018 12:32:54 -0800 Subject: [PATCH] Add support for --skip-node and --skip-browser options to build-test command --- .../bin/build-tests.js | 9 ++- .../create-universal-package/bin/clean.js | 2 +- .../lib/tasks/clean.js | 11 ++++ .../create-universal-package/test/index.js | 55 +++++++++++++++++++ 4 files changed, 74 insertions(+), 3 deletions(-) diff --git a/packages/create-universal-package/bin/build-tests.js b/packages/create-universal-package/bin/build-tests.js index 8477e7f..04f9d68 100755 --- a/packages/create-universal-package/bin/build-tests.js +++ b/packages/create-universal-package/bin/build-tests.js @@ -3,12 +3,17 @@ const args = require('args'); args .option('dir', 'Path to package dir', process.cwd()) - .option('skip-coverage', 'Skip coverage instrumentation', false); + .option('skip-coverage', 'Skip coverage instrumentation', false) + .option('skip-browser', 'Exclude browser build', false) + .option('skip-node', 'Exclude node build', false); const flags = args.parse(process.argv); const build = require('../lib/build.js'); -const jobs = build(flags, {testBrowser: true, testNode: true}); +const jobs = build(flags, { + testBrowser: !flags.skipBrowser, + testNode: !flags.skipNode, +}); const logger = process.stdout.isTTY ? require('./logger.js') diff --git a/packages/create-universal-package/bin/clean.js b/packages/create-universal-package/bin/clean.js index ba26a07..0a39319 100755 --- a/packages/create-universal-package/bin/clean.js +++ b/packages/create-universal-package/bin/clean.js @@ -5,5 +5,5 @@ args.option('dir', 'Path to package dir', process.cwd()); const flags = args.parse(process.argv); -const clean = require('../lib/clean.js'); +const clean = require('../lib/tasks/clean.js'); clean(flags); diff --git a/packages/create-universal-package/lib/tasks/clean.js b/packages/create-universal-package/lib/tasks/clean.js index e69de29..06bec41 100644 --- a/packages/create-universal-package/lib/tasks/clean.js +++ b/packages/create-universal-package/lib/tasks/clean.js @@ -0,0 +1,11 @@ +const cp = require('child_process'); +const {promisify} = require('util'); +const exec = promisify(cp.exec); +const path = require('path'); + +module.exports = function clean(opts) { + return Promise.all([ + exec(`rm -rf ${path.join(opts.dir, 'dist-tests/')}`), + exec(`rm -rf ${path.join(opts.dir, 'dist/')}`), + ]); +}; diff --git a/packages/create-universal-package/test/index.js b/packages/create-universal-package/test/index.js index 4ccc557..124f65f 100644 --- a/packages/create-universal-package/test/index.js +++ b/packages/create-universal-package/test/index.js @@ -7,6 +7,7 @@ const exec = promisify(cp.exec); tape('fixture package transpile', async t => { const dir = path.join(__dirname, '../../fixture-package/'); + await exec(`yarn clean`, {cwd: dir}); await exec(`yarn build`, {cwd: dir}); const expectedFiles = [ 'browser.es2015.es.js', @@ -31,8 +32,62 @@ tape('fixture package transpile', async t => { t.end(); }); +tape('fixture package build-tests', async t => { + const dir = path.join(__dirname, '../../fixture-package/'); + await exec(`yarn clean`, {cwd: dir}); + await exec(`yarn pretest`, {cwd: dir}); + const expectedFiles = ['browser.js', 'node.js', 'node.js.map']; + expectedFiles + .map(file => path.join(dir, 'dist-tests', file)) + .forEach((file, index) => { + t.ok(fs.existsSync(file), `${expectedFiles[index]} exists`); + }); + t.end(); +}); + +tape('fixture package build-tests --skip-browser', async t => { + const dir = path.join(__dirname, '../../fixture-package/'); + await exec(`yarn clean`, {cwd: dir}); + await exec(`yarn pretest --skip-browser`, {cwd: dir}); + const expectedFiles = ['node.js', 'node.js.map']; + const nonExpectedFiles = ['browser.js']; + expectedFiles + .map(file => path.join(dir, 'dist-tests', file)) + .forEach((file, index) => { + t.ok(fs.existsSync(file), `${expectedFiles[index]} exists`); + }); + + nonExpectedFiles + .map(file => path.join(dir, 'dist-tests', file)) + .forEach((file, index) => { + t.notok(fs.existsSync(file), `${nonExpectedFiles[index]} does not exist`); + }); + t.end(); +}); + +tape('fixture package build-tests --skip-node', async t => { + const dir = path.join(__dirname, '../../fixture-package/'); + await exec(`yarn clean`, {cwd: dir}); + await exec(`yarn pretest --skip-node`, {cwd: dir}); + const expectedFiles = ['browser.js']; + const nonExpectedFiles = ['node.js', 'node.js.map']; + expectedFiles + .map(file => path.join(dir, 'dist-tests', file)) + .forEach((file, index) => { + t.ok(fs.existsSync(file), `${expectedFiles[index]} exists`); + }); + + nonExpectedFiles + .map(file => path.join(dir, 'dist-tests', file)) + .forEach((file, index) => { + t.notok(fs.existsSync(file), `${nonExpectedFiles[index]} does not exist`); + }); + t.end(); +}); + tape('fixture package separate indexes transpile', async t => { const dir = path.join(__dirname, '../../fixture-package-separate-indexes/'); + await exec(`yarn clean`, {cwd: dir}); await exec(`yarn build`, {cwd: dir}); const expectedFiles = [ 'browser.es2015.es.js',