Browse Source

add CLI tests

contingency-plan
Rich-Harris 10 years ago
parent
commit
2a9a123c16
  1. 5
      test/cli/external-modules/_config.js
  2. 5
      test/cli/external-modules/main.js
  3. 62
      test/test.js

5
test/cli/external-modules/_config.js

@ -0,0 +1,5 @@
module.exports = {
description: 'allows external modules to be specified with --external=foo,bar,baz',
command: 'rollup main.js --format cjs --external path,util',
execute: true
};

5
test/cli/external-modules/main.js

@ -0,0 +1,5 @@
import { relative } from 'path';
import { format } from 'util';
assert.equal( format( 'it %s', 'works' ), 'it works' );
assert.equal( relative( 'a/b/c', 'a/c/b' ), '../../c/b' );

62
test/test.js

@ -4,6 +4,7 @@ require( 'console-group' ).install();
var path = require( 'path' );
var sander = require( 'sander' );
var assert = require( 'assert' );
var exec = require( 'child_process' ).exec;
var babel = require( 'babel-core' );
var sequence = require( './utils/promiseSequence' );
var rollup = require( '../dist/rollup' );
@ -11,6 +12,7 @@ var rollup = require( '../dist/rollup' );
var FUNCTION = path.resolve( __dirname, 'function' );
var FORM = path.resolve( __dirname, 'form' );
var SOURCEMAPS = path.resolve( __dirname, 'sourcemaps' );
var CLI = path.resolve( __dirname, 'cli' );
var PROFILES = [
{ format: 'amd' },
@ -221,4 +223,64 @@ describe( 'rollup', function () {
});
});
});
describe( 'cli', function () {
sander.readdirSync( CLI ).sort().forEach( function ( dir ) {
if ( dir[0] === '.' ) return; // .DS_Store...
describe( dir, function () {
var config = require( CLI + '/' + dir + '/_config' );
( config.skip ? it.skip : config.solo ? it.only : it )( dir, function ( done ) {
process.chdir( path.resolve( CLI, dir ) );
exec( config.command, function ( err, code, stderr ) {
if ( err ) return done( err );
if ( stderr ) console.error( stderr );
var unintendedError;
if ( config.execute ) {
try {
if ( config.babel ) {
code = babel.transform( code, {
whitelist: config.babel
}).code;
}
var fn = new Function( 'require', 'module', 'exports', 'assert', code );
var module = {
exports: {}
};
fn( require, module, module.exports, assert );
if ( config.error ) {
unintendedError = new Error( 'Expected an error while executing output' );
}
if ( config.exports ) {
config.exports( module.exports );
}
} catch ( err ) {
if ( config.error ) {
config.error( err );
} else {
unintendedError = err;
}
}
if ( config.show || unintendedError ) {
console.log( code + '\n\n\n' );
}
if ( config.solo ) console.groupEnd();
unintendedError ? done( unintendedError ) : done();
}
});
});
});
});
});
});

Loading…
Cancel
Save