UNPKG

opensphere-build-resolver

Version:

Resolves projects, their dependencies, plugins, and config to the correct arguments for compilation via the Google Closure Compiler, sass/node-sass, and other tools.

105 lines (87 loc) 3.25 kB
'use strict'; const Promise = require('bluebird'); const expect = require('chai').expect; const src = require('../../../plugins/gcc/src'); const fs = Promise.promisifyAll(require('fs')); const rimraf = require('rimraf'); const path = require('path'); describe('gcc src resolver', function() { afterEach(function() { // reset the source list between tests src.clear(); // clean up the output file rimraf.sync(path.join(outputDir, 'require-all.js')); }); var outputDir = path.join(process.cwd(), '.test'); var baseDir = path.join(__dirname, 'src'); var dirs = fs.readdirSync(baseDir); var getMapLocalPath = (dir) => { return (d) => { return d.replace(dir + path.sep, ''); }; }; var mapExpected = (p) => { return p.join(path.sep); }; dirs.forEach((d) => { var dir = path.join(baseDir, d); try { var pack = require(dir + '/package'); var expected = require(dir + '/expected').map(mapExpected); } catch (e) { console.log('skipping ' + d); } if (pack && expected) { it(d.replace(/-/g, ' '), function() { return src.resolver(pack, dir).then(() => { var options = {}; src.adder(pack, options); var result = options.js.map(getMapLocalPath(dir)); expect(result.length).to.equal(expected.length); expected.forEach((x) => { expect(result).to.contain(x); }); }); }); } }); it('should not create a require-all.js file for apps', function() { // for now we'll just appropriate a directory from another test var dir = path.join(baseDir, 'should-find-explicitly-defined-src-directories'); var pack = require(dir + '/package'); return src.postResolver(pack, outputDir) .then(() => { expect(fs.existsSync(path.join(outputDir, 'require-all.js'))).to.be.false; }); }); it('should create a require-all.js file for libs', function() { // for now we'll just appropriate a directory from another test var dir = path.join(baseDir, 'should-magically-find-lib-and-src-directories'); var pack = require(dir + '/package'); var lastDir = process.cwd(); process.chdir(dir); return src.resolver(pack, dir) .then(() => { return src.postResolver(pack, outputDir); }) .then(() => { process.chdir(lastDir); var file = path.join(outputDir, 'require-all.js'); expect(fs.existsSync(file)).to.be.true; // if the require-all file was written, then it should also be added to the src paths var options = {}; src.adder(null, options); expect(options.js.length).to.equal(3); expect(options.js).to.contain(file); return fs.readFileAsync(file, 'utf-8'); }) .then((content) => { // all files are required and sorted const requireLines = content.split('\n').filter((line) => line.startsWith('goog.require')); expect(requireLines.length).to.equal(3); expect(requireLines[0]).to.equal('goog.require(\'app\');'); expect(requireLines[1]).to.equal('goog.require(\'moduleUtil\');'); expect(requireLines[2]).to.equal('goog.require(\'util\');'); }); }); });