mimosa-ember-test
Version:
A Mimosa module for testing Ember apps
51 lines (41 loc) • 1.81 kB
JavaScript
var fs = require( "fs" )
, path = require( "path" )
, _ = require( "lodash" );
var _craftBaseTestemConfig = function ( mimosaConfig, currentTestemConfig ) {
// add routes
if ( !currentTestemConfig.routes ) {
currentTestemConfig.routes = {};
}
var jsDir = path.relative( mimosaConfig.root, mimosaConfig.watch.compiledJavascriptDir );
currentTestemConfig.routes["/js"] = jsDir.split( path.sep ).join( "/" );
currentTestemConfig.routes["/ember-test"] = mimosaConfig.emberTest.assetFolder;
// merge in testemConfig from mimosaConfig settings
currentTestemConfig = _.extend( currentTestemConfig, mimosaConfig.emberTest.testemConfig );
return currentTestemConfig;
};
exports.writeTestemConfig = function( mimosaConfig, options, next ) {
var currentTestemConfig = {};
if ( fs.existsSync( mimosaConfig.testemSimple.configFile ) ) {
try {
currentTestemConfig = require( mimosaConfig.testemSimple.configFile );
} catch ( err ) {
mimosaConfig.log.fatal( "Problem reading testem config, ", err );
throw new Error( "Problem reading testem config, ", err );
}
}
var baseTestemConfig = _craftBaseTestemConfig( mimosaConfig, _.clone( currentTestemConfig ) );
mimosaConfig.emberTest.apps.forEach( function( app ) {
var testDir = path.join( mimosaConfig.emberTest.assetFolder, app.testLocation );
var testPage = path.join( testDir, "runner.html" );
if ( path.sep !== "/" ) {
testPage = testPage.split( path.sep ).join( "/" );
}
var testemConfig = _.extend(
baseTestemConfig, { "test_page": testPage } );
var testemConfigPretty = JSON.stringify( testemConfig, null, 2 );
var fileName = path.join( testDir, "testem.json" );
fs.writeFileSync( fileName, testemConfigPretty );
});
next();
};
;