1
This commit is contained in:
17
nodejs/node_modules/cron-parser/test/31_of_month.js
generated
vendored
Executable file
17
nodejs/node_modules/cron-parser/test/31_of_month.js
generated
vendored
Executable file
@ -0,0 +1,17 @@
|
||||
var util = require('util');
|
||||
var test = require('tap').test;
|
||||
var expression = require('../lib/expression');
|
||||
|
||||
test('expression 31 of month', function(t) {
|
||||
try {
|
||||
var interval = expression.parse('0 0 31 * *');
|
||||
var i;
|
||||
var d;
|
||||
for (i = 0; i < 20; ++i) {
|
||||
d = interval.next();
|
||||
}
|
||||
t.end();
|
||||
} catch (err) {
|
||||
t.ifError(err, 'Interval parse error');
|
||||
}
|
||||
});
|
||||
32
nodejs/node_modules/cron-parser/test/bug.js
generated
vendored
Executable file
32
nodejs/node_modules/cron-parser/test/bug.js
generated
vendored
Executable file
@ -0,0 +1,32 @@
|
||||
var util = require('util');
|
||||
var test = require('tap').test;
|
||||
var CronExpression = require('../lib/expression');
|
||||
var CronDate = require('../lib/date');
|
||||
|
||||
|
||||
test('parse expression as UTC', function(t) {
|
||||
try {
|
||||
var options = {
|
||||
utc: true
|
||||
};
|
||||
|
||||
var interval = CronExpression.parse('0 0 10 * * *', options);
|
||||
|
||||
var date = interval.next();
|
||||
console.log(date.toString());
|
||||
t.equal(date.getUTCHours(), 10, 'Correct UTC hour value');
|
||||
|
||||
interval = CronExpression.parse('0 */5 * * * *', options);
|
||||
|
||||
var date = interval.next(), now = new Date();
|
||||
console.log(date.toString());
|
||||
now.setMinutes(now.getMinutes() + 5 - (now.getMinutes() % 5));
|
||||
console.log(now.toString(), date.getUTCHours(), now.getUTCHours());
|
||||
t.equal(date.getHours(), now.getUTCHours(), 'Correct local time for 5 minute interval');
|
||||
|
||||
} catch (err) {
|
||||
t.ifError(err, 'UTC parse error');
|
||||
}
|
||||
|
||||
t.end();
|
||||
});
|
||||
7
nodejs/node_modules/cron-parser/test/crontab.example
generated
vendored
Executable file
7
nodejs/node_modules/cron-parser/test/crontab.example
generated
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
# Comment line (ignore)
|
||||
ENV1="test1"
|
||||
ENV2="test2"
|
||||
|
||||
*/10 * * * * /path/to/exe
|
||||
*/10 * * * * /path/to/exe
|
||||
0 09-18 * * 1-5 /path/to/exe
|
||||
1009
nodejs/node_modules/cron-parser/test/expression.js
generated
vendored
Executable file
1009
nodejs/node_modules/cron-parser/test/expression.js
generated
vendored
Executable file
File diff suppressed because it is too large
Load Diff
22
nodejs/node_modules/cron-parser/test/increment_on_first_iteration.js
generated
vendored
Executable file
22
nodejs/node_modules/cron-parser/test/increment_on_first_iteration.js
generated
vendored
Executable file
@ -0,0 +1,22 @@
|
||||
var util = require('util');
|
||||
var sinon = require('sinon');
|
||||
var test = require('tap').test;
|
||||
var CronExpression = require('../lib/expression');
|
||||
|
||||
test('increment_on_first_itereation', function(t) {
|
||||
try {
|
||||
var clock = sinon.useFakeTimers();
|
||||
var fake_now = new Date('Tue Feb 21 2017 16:45:00');
|
||||
clock.tick(fake_now.getTime());
|
||||
var interval = CronExpression.parse('* * * * *');
|
||||
t.ok(interval, 'Interval parsed');
|
||||
var next = interval.next();
|
||||
t.ok(next, 'Found next scheduled interval');
|
||||
// Make sure next has incremented in 1 minute
|
||||
t.equal(fake_now.getTime() + 60000, next.getTime());
|
||||
clock.restore();
|
||||
t.end();
|
||||
} catch (err) {
|
||||
t.ifError(err, 'Interval parse error');
|
||||
}
|
||||
});
|
||||
59
nodejs/node_modules/cron-parser/test/parser.js
generated
vendored
Executable file
59
nodejs/node_modules/cron-parser/test/parser.js
generated
vendored
Executable file
@ -0,0 +1,59 @@
|
||||
var util = require('util');
|
||||
var test = require('tap').test;
|
||||
var CronParser = require('../lib/parser');
|
||||
|
||||
// Globals
|
||||
|
||||
test('load crontab file', function(t) {
|
||||
CronParser.parseFile('./crontab.example', function(err, result) {
|
||||
t.ifError(err, 'File read error');
|
||||
t.ok(result, 'Crontab parsed parsed');
|
||||
|
||||
t.equal(Object.keys(result.variables).length, 2, 'variables length matches');
|
||||
t.equal(Object.keys(result.errors).length, 0, 'errors length matches');
|
||||
t.equal(result.expressions.length, 3, 'expressions length matches');
|
||||
|
||||
// Parse expressions
|
||||
var next = null;
|
||||
|
||||
t.equal(result.expressions[0].hasNext(), true);
|
||||
next = result.expressions[0].next();
|
||||
t.ok(next, 'first date');
|
||||
|
||||
next = result.expressions[1].next();
|
||||
t.ok(next, 'second date');
|
||||
|
||||
next = result.expressions[2].next();
|
||||
t.ok(next, 'third date');
|
||||
|
||||
t.end();
|
||||
});
|
||||
});
|
||||
|
||||
test('no next date', function(t) {
|
||||
var options = {
|
||||
currentDate: new Date(2014, 0, 1),
|
||||
endDate: new Date(2014, 0, 1)
|
||||
};
|
||||
|
||||
try {
|
||||
var interval = CronParser.parseExpression('* * 2 * *', options);
|
||||
t.equal(interval.hasNext(), false);
|
||||
} catch (err) {
|
||||
t.ifError(err, 'Parse read error');
|
||||
}
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('prev with CurrentDate greater than 0ms should work', function(t) {
|
||||
var options = {
|
||||
currentDate: new Date('2017-06-13T18:21:25.002Z')
|
||||
};
|
||||
|
||||
var interval = CronParser.parseExpression('*/5 * * * * *', options);
|
||||
var prev = interval.prev();
|
||||
t.equal(prev.getSeconds(), 25);
|
||||
|
||||
t.end();
|
||||
});
|
||||
379
nodejs/node_modules/cron-parser/test/timezone.js
generated
vendored
Executable file
379
nodejs/node_modules/cron-parser/test/timezone.js
generated
vendored
Executable file
@ -0,0 +1,379 @@
|
||||
var test = require('tap').test;
|
||||
var CronExpression = require('../lib/expression');
|
||||
|
||||
test('It works on DST start', function(t) {
|
||||
try {
|
||||
var options = {
|
||||
currentDate: '2016-03-27 02:00:01',
|
||||
tz: 'Europe/Athens'
|
||||
};
|
||||
|
||||
var interval, date;
|
||||
|
||||
interval = CronExpression.parse('0 * * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 4, 'Due to DST start in Athens, 3 is skipped');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 5, '5 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
interval = CronExpression.parse('30 2 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 30, '30 Minutes');
|
||||
t.equal(date.getHours(), 2, '2 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 30, '30 Minutes');
|
||||
t.equal(date.getHours(), 2, '2 AM');
|
||||
t.equal(date.getDate(), 28, 'on the 28th');
|
||||
|
||||
interval = CronExpression.parse('0 3 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 4, 'Due to DST start in Athens, 3 is skipped');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 3, '3 on the 28th');
|
||||
t.equal(date.getDate(), 28, 'on the 28th');
|
||||
|
||||
interval = CronExpression.parse('*/20 3 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 4, 'Due to DST start in Athens, 3 is skipped');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 20, '20 Minutes');
|
||||
t.equal(date.getHours(), 4, 'Due to DST start in Athens, 3 is skipped');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 40, '20 Minutes');
|
||||
t.equal(date.getHours(), 4, 'Due to DST start in Athens, 3 is skipped');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 28, 'on the 28th');
|
||||
|
||||
options.currentDate = '2016-03-27 00:00:01';
|
||||
|
||||
interval = CronExpression.parse('0 * 27 * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 1, '1 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 2, '2 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 4, '4 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 5, '5 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
options.currentDate = '2016-03-27 00:00:01';
|
||||
options.endDate = '2016-03-27 03:00:01';
|
||||
|
||||
interval = CronExpression.parse('0 * * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 1, '1 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 2, '2 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0 Minutes');
|
||||
t.equal(date.getHours(), 4, '4 AM');
|
||||
t.equal(date.getDate(), 27, 'on the 27th');
|
||||
|
||||
// Out of the timespan range
|
||||
t.throws(function() {
|
||||
date = interval.next();
|
||||
});
|
||||
} catch (err) {
|
||||
t.ifError(err, 'Interval parse error');
|
||||
}
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('It works on DST end', function(t) {
|
||||
try {
|
||||
var options = {
|
||||
currentDate: '2016-10-30 02:00:01',
|
||||
tz: 'Europe/Athens'
|
||||
};
|
||||
|
||||
var interval, date;
|
||||
|
||||
interval = CronExpression.parse('0 * * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, 'Due to DST end in Athens (4-->3)');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 4, '4 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
interval = CronExpression.parse('0 3 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
|
||||
interval = CronExpression.parse('*/20 3 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0');
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 20, '20');
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 40, '40');
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getMinutes(), 0, '0');
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
|
||||
options.currentDate = '2016-10-30 00:00:01';
|
||||
|
||||
interval = CronExpression.parse('0 * 30 * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 1, '1 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 2, '2 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 4, '4 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
options.currentDate = '2016-10-30 00:00:01';
|
||||
options.endDate = '2016-10-30 03:00:01';
|
||||
|
||||
interval = CronExpression.parse('0 * * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 1, '1 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 2, '2 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
// Out of the timespan range
|
||||
t.throws(function() {
|
||||
date = interval.next();
|
||||
});
|
||||
|
||||
options.endDate = '2016-10-30 04:00:01';
|
||||
|
||||
interval = CronExpression.parse('0 * * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 1, '1 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 2, '2 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 3, '3 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 4, '4 AM');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
|
||||
// Out of the timespan range
|
||||
t.throws(function() {
|
||||
date = interval.next();
|
||||
});
|
||||
|
||||
options = {
|
||||
currentDate : new Date('Sun Oct 29 2016 01:00:00 GMT+0200')
|
||||
}
|
||||
|
||||
interval = CronExpression.parse('0 12 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 29, '29th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
|
||||
options = {
|
||||
currentDate : new Date('Sun Oct 29 2016 02:59:00 GMT+0200')
|
||||
}
|
||||
|
||||
interval = CronExpression.parse('0 12 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 29, '29th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
|
||||
options = {
|
||||
currentDate : new Date('Sun Oct 29 2016 02:59:59 GMT+0200')
|
||||
}
|
||||
|
||||
interval = CronExpression.parse('0 12 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 29, '29th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
|
||||
options = {
|
||||
currentDate : new Date('Sun Oct 30 2016 01:00:00 GMT+0200')
|
||||
}
|
||||
|
||||
interval = CronExpression.parse('0 12 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
|
||||
options = {
|
||||
currentDate : new Date('Sun Oct 30 2016 01:59:00 GMT+0200')
|
||||
}
|
||||
|
||||
interval = CronExpression.parse('0 12 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
|
||||
options = {
|
||||
currentDate : new Date('Sun Oct 30 2016 01:59:59 GMT+0200')
|
||||
}
|
||||
|
||||
interval = CronExpression.parse('0 12 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
|
||||
options = {
|
||||
currentDate : new Date('Sun Oct 30 2016 02:59:00 GMT+0200')
|
||||
}
|
||||
|
||||
interval = CronExpression.parse('0 12 * * *', options);
|
||||
t.ok(interval, 'Interval parsed');
|
||||
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 30, '30th');
|
||||
date = interval.next();
|
||||
t.equal(date.getHours(), 12, '12');
|
||||
t.equal(date.getDate(), 31, '31st');
|
||||
} catch (err) {
|
||||
t.ifError(err, 'Interval parse error');
|
||||
}
|
||||
|
||||
t.end();
|
||||
});
|
||||
Reference in New Issue
Block a user