mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
105 lines
2.7 KiB
JavaScript
105 lines
2.7 KiB
JavaScript
var path = require('path'),
|
|
nodeunit = require('nodeunit'),
|
|
moment = require('../moment');
|
|
|
|
|
|
module.exports = function (grunt) {
|
|
// placeholder for an array of timezones
|
|
var ALL_ZONES,
|
|
INITIAL_ZONE,
|
|
|
|
done;
|
|
|
|
/******************************
|
|
Grunt task
|
|
******************************/
|
|
|
|
grunt.registerTask('zones', 'Run the unit tests in different timezones.', function () {
|
|
done = this.async();
|
|
getCurrentTimezone(function (zone) {
|
|
// save the initial timezone so we dont break our computers
|
|
INITIAL_ZONE = zone;
|
|
getAllTimezones(function (zones) {
|
|
// store all the timezones
|
|
ALL_ZONES = zones;
|
|
// start running the tests
|
|
nextTest(function () {
|
|
// reset the timezone like nothing ever happened
|
|
resetTimezone();
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
/******************************
|
|
Timezones
|
|
******************************/
|
|
|
|
function resetTimezone() {
|
|
setTimezone(INITIAL_ZONE, function () {
|
|
grunt.log.writeln("Resetting timezone back to " + INITIAL_ZONE);
|
|
done();
|
|
});
|
|
}
|
|
|
|
function getCurrentTimezone(cb) {
|
|
grunt.util.spawn({
|
|
cmd: "systemsetup",
|
|
args: ["gettimezone"]
|
|
}, function (err, result, code) {
|
|
cb(result.stdout.replace('Time Zone: ', ''));
|
|
});
|
|
}
|
|
|
|
function getAllTimezones(cb) {
|
|
grunt.util.spawn({
|
|
cmd: "systemsetup",
|
|
args: ["listtimezones"]
|
|
}, function (err, result, code) {
|
|
var zones = result.stdout.replace('Time Zones:', '');
|
|
zones = zones.match(/\S+/g);
|
|
cb(zones);
|
|
});
|
|
}
|
|
|
|
function setTimezone(zone, cb) {
|
|
grunt.util.spawn({
|
|
cmd: "systemsetup",
|
|
args: ["settimezone", zone]
|
|
}, function (err, result, code) {
|
|
cb();
|
|
});
|
|
}
|
|
|
|
/******************************
|
|
Tests
|
|
******************************/
|
|
|
|
function nextTest(cb) {
|
|
var zone = ALL_ZONES.pop();
|
|
if (zone) {
|
|
setTimezone(zone, function () {
|
|
testZone(zone, function () {
|
|
nextTest(cb);
|
|
});
|
|
});
|
|
} else {
|
|
cb();
|
|
}
|
|
}
|
|
|
|
function testZone(zone, cb) {
|
|
grunt.util.spawn({
|
|
cmd: "grunt",
|
|
args: ["zone"]
|
|
}, function (err, result, code) {
|
|
if (err) {
|
|
resetTimezone();
|
|
throw err;
|
|
}
|
|
console.log(result.stdout);
|
|
cb();
|
|
});
|
|
}
|
|
};
|