Files
DemoApp/node_modules/moment/test/zone.js

181 lines
3.7 KiB
JavaScript

var terminal = require('child_process').spawn('bash'),
path = require('path'),
util = require('util'),
nodeunit = require('nodeunit');
var ZONES;
/******************************
Get Timezone
******************************/
var currentTimezone = '';
function getTimezone() {
var term = require('child_process').spawn('bash');
term.stdout.on('data', function (data) {
currentTimezone = data.toString().replace('Time Zone: ', '');
getTimezoneList();
});
term.stdin.write('systemsetup gettimezone');
term.stdin.end();
}
function getTimezoneList() {
var term = require('child_process').spawn('bash'),
data = '';
term.stdout.on('data', function (d) {
data += d;
});
term.stdout.on('end', function () {
data = data.replace('Time Zones:', '');
ZONES = data.match(/\S+/g);
// console.log(ZONES);
startTests();
});
term.stdin.write('systemsetup listtimezones');
term.stdin.end();
}
/******************************
Set Timezone
******************************/
var currentTimezone = '';
function setTimezone() {
terminal.stdin.write('systemsetup settimezone ' + currentTimezone);
terminal.stdin.end();
}
/******************************
Tests
******************************/
var files = ['test/moment'],
paths = files.map(function (p) {
return path.join(process.cwd(), p);
});
var globalfailures = '';
var f = 0;
var p = 0;
function errorLog(assertion) {
if (!assertion.error) {
return assertion;
}
var e = assertion.error;
if (e.actual && e.expected) {
var actual = util.inspect(e.actual, false, 10).replace(/\n$/, ''),
expected = util.inspect(e.expected, false, 10).replace(/\n$/, ''),
multiline = (actual.indexOf('\n') !== -1 || expected.indexOf('\n') !== -1),
spacing = (multiline ? '\n' : ' ');
e._message = e.message;
e.stack = (
e.name + ':' + spacing +
actual + spacing + e.operator + spacing +
expected + '\n' +
e.stack.split('\n').slice(1).join('\n')
);
}
return assertion;
}
var zone = '',
nextZone = '';
function runTestIfNeeded() {
if (zone === nextZone) {
return;
}
nextZone = zone;
console.log("-----------------------");
console.log(zone + " testing started...");
nodeunit.runFiles(paths, {
testDone: function (name, assertions) {
if (assertions.failures()) {
console.log('\nFAILURE: ' + name);
assertions.forEach(function (a) {
if (a.failed()) {
a = errorLog(a);
if (a.error && a.message) {
console.log('Assertion Message: ' + a.message);
}
console.log(a.error.stack);
}
});
}
},
done: function (assertions) {
if (assertions.failures()) {
console.log('\n' + zone + ' had ' + assertions.failures() + ' failures');
globalfailures += zone + ' had ' + assertions.failures() + ' failures\n';
f++;
} else {
console.log(zone + ' passed all tests!');
p++;
}
console.log("-----------------------");
nextTest();
}
});
}
function runTest(zoned) {
zone = zoned;
terminal.stdin.write('systemsetup settimezone ' + zone + '\n');
}
terminal.stdout.on('data', function(d) {
setTimeout(runTestIfNeeded, 100);
});
var i = 0;
function startTests() {
nextTest();
//setTimezone();
}
function nextTest() {
if (i < ZONES.length) {
runTest(ZONES[i]);
} else {
console.log("----------------------");
console.log("----------------------");
console.log(globalfailures);
console.log("----------------------");
console.log("----------------------");
console.log("--- Total Failing " + f);
console.log("----------------------");
console.log("--- Total Passing " + p);
console.log("----------------------");
console.log("----------------------");
setTimezone();
}
i++;
}
/******************************
Start it off
******************************/
getTimezone();