UNPKG

2.18 kBJavaScriptView Raw
1var dataflows = require ('dataflo.ws');
2var paint = dataflows.color;
3
4var minimist = require ('minimist');
5
6module.exports = {
7 launchContext: function () {
8 return {
9 token: process.argv[3],
10 args: minimist(process.argv.slice(3))
11 };
12 },
13 launch: function (conf) {
14 var tokenIConf = conf.initiator['token'];
15 var tokenIClass = dataflows.initiator('token');
16
17 if ('function' == typeof tokenIClass) {
18 var processor = new tokenIClass(tokenIConf);
19 } else {
20 console.error('Cannot load initiator "%s"', 'token');
21 }
22
23 var context = this.launchContext();
24
25 var caseMatch = context.args._[0] || "^test\\W";
26
27 var flows = processor.dataflows || processor.flows;
28 var cases = [];
29 for (var token in flows) {
30 if (token.match (caseMatch))
31 cases.push (token);
32 }
33 cases.sort();
34
35 var casesToRun = cases.length;
36 var casesResult = { ok: [], fail: [] };
37
38 var onTestEnd = function(token) {
39 if (--casesToRun)
40 return;
41
42 console.log('Completed: ' + casesResult.ok.length + ' of ' + cases.length );
43 console.log(
44 'Failed: ' + casesResult.fail.length + ' of ' + cases.length
45 + (casesResult.fail.length === 0 ? '': ': ')
46 + casesResult.fail.map (function (c) {return paint.error (c)}).join (', ')
47 );
48
49 // process.kill();
50 }
51
52 cases.forEach(function(token) {
53 var successKey = 'ok';
54 var failKey = 'fail';
55
56 console.log ('Running test case ' + paint.magenta (token) + '; expected ' + paint.green (successKey));
57// console.log (conf.templates.task);
58
59 var flow = processor.process(token, {
60 templates: conf.templates.task,
61 request: context.param,
62 autoRun: false
63 });
64
65 var flowExpect = "ok";
66 if (flow.expect) {
67 flowExpect = flow.expect;
68 }
69
70 if (flowExpect == 'fail') {
71 successKey = 'fail';
72 failKey = 'ok';
73 }
74
75 flow.on('completed', function(flow) {
76 console.log (paint.green ('Test case', token, 'ok'));
77 casesResult[successKey].push (token);
78 onTestEnd(token);
79 });
80
81 flow.on('failed', function(flow) {
82 console.log (paint.red ('Test case', token, 'failed'));
83 casesResult[failKey].push (token);
84 onTestEnd(token);
85 });
86
87 flow.run();
88 })
89
90 }
91}