txedge-js
Version:
Edge.js: run .NET and Node.js in-process on Windows, Mac OS, and Linux
63 lines (51 loc) • 1.75 kB
JavaScript
var spawn = require('child_process').spawn;
var path = require('path');
var testDir = path.resolve(__dirname, '../test');
var input = path.resolve(testDir, 'tests.cs');
var output = path.resolve(testDir, 'Edge.Tests.dll');
var buildParameters = ['-target:library', '/debug', '-out:' + output, input];
var mocha = path.resolve(__dirname, '../node_modules/mocha/bin/mocha');
var fs = require('fs');
if (!process.env.EDGE_USE_CORECLR) {
if (process.platform !== 'win32') {
buildParameters = buildParameters.concat(['-sdk:4.5']);
}
run(process.platform === 'win32' ? 'csc' : 'mcs', buildParameters, runOnSuccess);
}
else {
run(process.platform === 'win32' ? 'dotnet.exe' : 'dotnet', ['restore'], function(code, signal) {
if (code === 0) {
run(process.platform === 'win32' ? 'dotnet.exe' : 'dotnet', ['build'], runOnSuccess);
}
});
}
function run(cmd, args, onClose){
var params = process.env.EDGE_USE_CORECLR ? {cwd: testDir} : {};
var command = spawn(cmd, args, params);
var result = '';
var error = '';
command.stdout.on('data', function(data) {
result += data.toString();
});
command.stderr.on('data', function(data) {
error += data.toString();
});
command.on('error', function(err) {
console.log(error);
console.log(err);
});
command.on('close', function(code){
console.log(result);
onClose(code, '');
});
}
function runOnSuccess(code, signal) {
if (code === 0) {
process.env['EDGE_APP_ROOT'] = path.join(testDir, 'bin', 'Debug', 'netcoreapp1.1');
spawn('node', [mocha, testDir, '-R', 'spec', '-t', '10000', '-gc'], {
stdio: 'inherit'
}).on('error', function(err) {
console.log(err);
});
}
}