react 0.2.4 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +146 -94
  2. package/doc/alternate-dsls.md +103 -0
  3. package/{lib → dsl}/chain.js +5 -3
  4. package/{lib → dsl}/fstr.js +17 -6
  5. package/{lib → dsl}/pcode.js +19 -8
  6. package/examples/chain-events1.js +28 -7
  7. package/examples/chain1.js +2 -2
  8. package/examples/default-events1.js +33 -6
  9. package/examples/default-log-events.js +43 -0
  10. package/examples/fstr-events1.js +4 -17
  11. package/examples/fstr1.js +3 -2
  12. package/examples/pcode1.js +2 -2
  13. package/lib/base-task.js +8 -6
  14. package/lib/cb-task.js +14 -1
  15. package/lib/core.js +46 -15
  16. package/lib/dsl.js +14 -6
  17. package/lib/event-manager.js +29 -15
  18. package/lib/finalcb-first-task.js +16 -10
  19. package/lib/finalcb-task.js +17 -10
  20. package/lib/input-parser.js +7 -3
  21. package/lib/log-events.js +71 -0
  22. package/lib/parse.js +6 -3
  23. package/lib/promise-task.js +89 -0
  24. package/lib/ret-task.js +1 -1
  25. package/lib/task.js +32 -23
  26. package/lib/track-tasks.js +117 -0
  27. package/lib/validate.js +14 -5
  28. package/lib/vcon.js +8 -3
  29. package/lib/when-task.js +81 -0
  30. package/package.json +4 -2
  31. package/promise-resolve.js +35 -0
  32. package/react.js +0 -4
  33. package/test/core-deferred.test.js +134 -0
  34. package/test/core-promised.test.js +132 -0
  35. package/test/core-when.test.js +84 -0
  36. package/test/core.test.js +108 -60
  37. package/test/dsl.test.js +58 -6
  38. package/test/{chain.test.js → dsl/chain.test.js} +85 -1
  39. package/test/{fstr.test.js → dsl/fstr.test.js} +13 -1
  40. package/test/{pcode.test.js → dsl/pcode.test.js} +128 -1
  41. package/test/exec-options.test.js +2 -1
  42. package/test/finalcb-task.test.js +6 -5
  43. package/test/input-parser.test.js +10 -6
  44. package/test/module-use.test.js +13 -199
  45. package/test/promise-auto-resolve.test.js +51 -0
  46. package/test/validate.test.js +30 -1
  47. package/test/vcon.test.js +13 -0
  48. package/oldExamples/analyze.js +0 -29
  49. package/oldExamples/analyze2.js +0 -29
  50. package/oldExamples/example10-dsl.js +0 -63
  51. package/oldExamples/example11.js +0 -62
  52. package/oldExamples/example12.js +0 -63
  53. package/oldExamples/example13.js +0 -63
  54. package/oldExamples/example14.js +0 -63
  55. package/oldExamples/example15.js +0 -75
  56. package/oldExamples/example6-ast.js +0 -47
  57. package/oldExamples/example6-dsl.js +0 -49
  58. package/oldExamples/example8-ast.js +0 -55
  59. package/oldExamples/example8-dsl.js +0 -53
  60. package/oldExamples/example9-ast.js +0 -58
  61. package/oldExamples/example9-dsl.js +0 -57
  62. package/oldExamples/function-str-ex1.js +0 -33
  63. package/oldExamples/function-str-ex2.js +0 -67
  64. package/oldExamples/trait1.js +0 -41
  65. package/oldExamples/trait2.js +0 -44
package/test/dsl.test.js CHANGED
@@ -77,6 +77,18 @@ test('single task, err and out params', function (t) {
77
77
  t.end();
78
78
  });
79
79
 
80
+ test('using - with literal string', function (t) {
81
+ var r = react('myName', '"hello-world", cb -> err, c',
82
+ falpha, '"another-string", cb -> err, c'
83
+ );
84
+ t.deepEqual(r.ast.inParams, ['"hello-world"']);
85
+ t.deepEqual(r.ast.tasks, [
86
+ { f: falpha, a: ['"another-string"'], out: ['c'], type: 'cb', name: 'falpha'}
87
+ ]);
88
+ t.deepEqual(r.ast.outTask, { a: ['c'], type: 'finalcb' });
89
+ t.end();
90
+ });
91
+
80
92
  test('single task, ERR and out params', function (t) {
81
93
  var r = react('myName', 'cb -> ERR, c',
82
94
  falpha, 'cb -> ERR, c'
@@ -199,15 +211,54 @@ test('missing name, throws error', function (t) {
199
211
  falpha, 'cb -> err, c'
200
212
  );
201
213
  };
202
- t.throws(fn, new Error('param[0] should be the flow name, instead found in/out def: cb -> err, c'));
214
+ t.throws(fn, new Error('first flow parameter should be the flow name, but found in/out def: cb -> err, c'));
215
+ t.end();
216
+ });
217
+
218
+ test('missing err in flow in/out - force for consistency, throw error', function (t) {
219
+ var fn = function () {
220
+ var r = react('myname', 'cb -> c', // missing err
221
+ falpha, 'cb -> err, c'
222
+ );
223
+ };
224
+ t.throws(fn, new Error('callback specified, but first out param was not "err", use for clarity. Found in/out def: cb -> c'));
225
+ t.end();
226
+ });
227
+
228
+ test('missing err in task in/out - force for consistency, throw error', function (t) {
229
+ var fn = function () {
230
+ var r = react('myname', 'cb -> err, c',
231
+ falpha, 'cb -> c' // missing err
232
+ );
233
+ };
234
+ t.throws(fn, new Error('callback specified, but first out param was not "err", use for clarity. Found in/out def: cb -> c'));
235
+ t.end();
236
+ });
237
+
238
+ test('found err, but missing cb/callback in flow in/out - force for consistency, throw error', function (t) {
239
+ var fn = function () {
240
+ var r = react('myname', 'a -> err, c', // missing cb
241
+ falpha, 'cb -> err, c'
242
+ );
243
+ };
244
+ t.throws(fn, new Error('found err param, but cb/callback is not specified, is this cb-style async or sync function? Found in/out def: a -> err, c'));
203
245
  t.end();
204
246
  });
205
247
 
248
+ test('found err, but missing cb/callback in task in/out - force for consistency, throw error', function (t) {
249
+ var fn = function () {
250
+ var r = react('myname', 'cb -> err, c',
251
+ falpha, 'a -> err, c' // missing cb
252
+ );
253
+ };
254
+ t.throws(fn, new Error('found err param, but cb/callback is not specified, is this cb-style async or sync function? Found in/out def: a -> err, c'));
255
+ t.end();
256
+ });
206
257
 
207
258
  test('extra arg throws error', function (t) {
208
259
  var fn = function () {
209
260
  var r = react('myName', 'a, b, cb -> err, c, d',
210
- falpha, 'a -> err, c', { after: fbeta },
261
+ falpha, 'a, cb -> err, c', { after: fbeta },
211
262
  fbeta, 'a, b -> returns d',
212
263
  'extraBadArg'
213
264
  );
@@ -218,8 +269,8 @@ test('extra arg throws error', function (t) {
218
269
 
219
270
  test('not enough args throws error', function (t) {
220
271
  var fn = function () {
221
- var r = react('myName', 'a, b, cb -> c, d',
222
- falpha, 'a -> err, c', { after: fbeta },
272
+ var r = react('myName', 'a, b, cb -> err, c, d',
273
+ falpha, 'a, cb -> err, c', { after: fbeta },
223
274
  fbeta
224
275
  );
225
276
  };
@@ -228,6 +279,7 @@ test('not enough args throws error', function (t) {
228
279
  });
229
280
 
230
281
  test('long example', function (t) {
282
+ /*jshint white: false */
231
283
  t.plan(4);
232
284
  function loadUser(uid, cb){ setTimeout(cb, 100, null, "User"+uid); }
233
285
  function loadFile(filename, cb){ setTimeout(cb, 100, null, 'Filedata'+filename); }
@@ -260,7 +312,7 @@ test('long example', function (t) {
260
312
  // selectFirst
261
313
 
262
314
  test('selectFirst', function (t) {
263
- var r = react.selectFirst('myName', 'a, b, cb -> c',
315
+ var r = react.selectFirst('myName', 'a, b, cb -> err, c',
264
316
  { otherOptFoo: 'foo'}, // main options
265
317
  falpha, 'a, b, cb -> err, c',
266
318
  fbeta, 'a, b -> c'
@@ -275,4 +327,4 @@ test('selectFirst', function (t) {
275
327
  t.equal(r.ast.name, 'myName', 'name should match if supplied');
276
328
  t.equal(r.ast.otherOptFoo, 'foo', 'other options should pass through');
277
329
  t.end();
278
- });
330
+ });
@@ -3,7 +3,8 @@
3
3
  var test = require('tap').test;
4
4
  var sprintf = require('sprintf').sprintf;
5
5
 
6
- var chainDefine = require('../lib/chain.js');
6
+ var chainDefine = require('../../dsl/chain'); // require('react/dsl/chain');
7
+ require('../../lib/track-tasks'); // require('react/lib/track-tasks'); // turn on tracking
7
8
 
8
9
  function falpha() { }
9
10
  function fbeta() { }
@@ -75,6 +76,19 @@ test('single task, single out params', function (t) {
75
76
  t.end();
76
77
  });
77
78
 
79
+ test('single task, err params', function (t) {
80
+ var fn = chainDefine()
81
+ .out('err')
82
+ .async(falpha).in().out('err', 'c')
83
+ .end();
84
+ t.deepEqual(fn.ast.inParams, []);
85
+ t.deepEqual(fn.ast.tasks, [
86
+ { f: falpha, type: 'cb', a: [], out: ['c'], name: 'falpha' }
87
+ ]);
88
+ t.deepEqual(fn.ast.outTask, { a: [], type: 'finalcb' });
89
+ t.end();
90
+ });
91
+
78
92
  test('single task, err and out params', function (t) {
79
93
  var fn = chainDefine()
80
94
  .out('err', 'c')
@@ -238,3 +252,73 @@ test('selectFirst', function (t) {
238
252
  });
239
253
 
240
254
 
255
+ // full integration tests
256
+
257
+ test('chainDefine use', function (t) {
258
+ t.plan(8);
259
+ function multiply(a, b, cb) { cb(null, a * b); }
260
+ function add(a, b, cb) { cb(null, a + b); }
261
+
262
+ var events = [];
263
+ function accumEvents(task) {
264
+ events.push(task);
265
+ }
266
+
267
+ var fn = chainDefine()
268
+ .in('a', 'b', 'cb')
269
+ .out('err', 'm', 's')
270
+ .async(multiply).in('a', 'b', 'cb').out('err', 'm')
271
+ .async(add).in('m', 'a', 'cb').out('err', 's')
272
+ .end();
273
+
274
+ fn.events.on('task.complete', accumEvents);
275
+
276
+ fn(2, 3, function (err, m, s) {
277
+ t.deepEqual(err, null, 'should not be any error');
278
+ t.equal(m, 6);
279
+ t.equal(s, 8);
280
+ t.equal(events.length, 2, 'should have seen two task compl events');
281
+ t.equal(events[0].name, 'multiply', 'name matches');
282
+ t.deepEqual(events[0].results, [6], 'results match');
283
+ t.equal(events[1].name, 'add', 'name matches');
284
+ t.deepEqual(events[1].results, [8], 'results match');
285
+ t.end();
286
+ });
287
+ });
288
+
289
+ test('use chainDefine selectFirst with events', function (t) {
290
+ t.plan(7);
291
+ function noSuccess(a, b, cb) {
292
+ setTimeout(function () { cb(null); }, 100); // returns undefined result
293
+ }
294
+ function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
295
+ function add(a, b, cb) { cb(null, a + b); }
296
+
297
+ var events = [];
298
+ function accumEvents(task) {
299
+ events.push(task);
300
+ }
301
+
302
+ var fn = chainDefine()
303
+ .selectFirst()
304
+ .in('a', 'b', 'cb')
305
+ .out('err', 'c')
306
+ .async(noSuccess).in('a', 'b', 'cb').out('err', 'c')
307
+ .async(noSuccessNull).in('a', 'b', 'cb').out('err', 'c')
308
+ .async(add).in('a', 'b', 'cb').out('err', 'c')
309
+ .async(noSuccess).in('a', 'b', 'cb').out('err', 'c')
310
+ .end();
311
+
312
+ fn.events.on('task.complete', accumEvents);
313
+
314
+ fn(2, 3, function (err, c) {
315
+ t.deepEqual(err, null, 'should not be any error');
316
+ t.equal(c, 5);
317
+ t.equal(events.length, 3, 'should have seen two task compl events');
318
+ t.equal(events[0].name, 'noSuccess', 'name matches');
319
+ t.equal(events[1].name, 'noSuccessNull', 'name matches');
320
+ t.equal(events[2].name, 'add', 'name matches');
321
+ t.deepEqual(events[2].results, [5], 'results match');
322
+ t.end();
323
+ });
324
+ });
@@ -3,7 +3,7 @@
3
3
  var test = require('tap').test;
4
4
  var sprintf = require('sprintf').sprintf;
5
5
 
6
- var fstrDefine = require('../lib/fstr.js');
6
+ var fstrDefine = require('../../dsl/fstr'); // require('react/dsl/fstr');
7
7
 
8
8
  function falpha() { }
9
9
  function fbeta() { }
@@ -59,6 +59,18 @@ test('single task, single out params', function (t) {
59
59
  t.end();
60
60
  });
61
61
 
62
+ test('single task, err params', function (t) {
63
+ var r = fstrDefine('a, b', [
64
+ falpha, 'a, b -> err, c'
65
+ ], 'err');
66
+ t.deepEqual(r.ast.inParams, ['a', 'b']);
67
+ t.deepEqual(r.ast.tasks, [
68
+ { f: falpha, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
69
+ ]);
70
+ t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
71
+ t.end();
72
+ });
73
+
62
74
  test('single task, err and out params', function (t) {
63
75
  var r = fstrDefine('a, b', [
64
76
  falpha, 'a, b -> err, c'
@@ -3,7 +3,8 @@
3
3
  var test = require('tap').test;
4
4
  var sprintf = require('sprintf').sprintf;
5
5
 
6
- var pcode = require('../lib/pcode.js');
6
+ var pcode = require('../../dsl/pcode'); // require('react/dsl/pcode');
7
+ var EventCollector = require('../../lib/track-tasks').EventCollector; // require('react/lib/track-tasks'); // turn on tracking
7
8
 
8
9
  function falpha() { }
9
10
  function fbeta() { }
@@ -62,6 +63,20 @@ test('single task, single out params', function (t) {
62
63
  t.end();
63
64
  });
64
65
 
66
+ test('single task, single out params, cb(err)', function (t) {
67
+ var locals = { falpha: falpha };
68
+ var r = pcode('a, b', [
69
+ 'c := falpha(a, b)',
70
+ 'cb(err)'
71
+ ], locals);
72
+ t.deepEqual(r.ast.inParams, ['a', 'b']);
73
+ t.deepEqual(r.ast.tasks, [
74
+ { f: 'falpha', a: ['a', 'b'], out: ['c'], type: 'cb', name: 'falpha'}
75
+ ]);
76
+ t.deepEqual(r.ast.outTask, { a: [], type: 'finalcb' });
77
+ t.end();
78
+ });
79
+
65
80
  test('single task, err and out params', function (t) {
66
81
  var locals = { falpha: falpha };
67
82
  var r = pcode('a, b', [
@@ -319,3 +334,115 @@ test('selectFirst', function (t) {
319
334
  t.end();
320
335
  });
321
336
 
337
+ // full integration tests
338
+
339
+ test('use pcodeDefine from module', function (t) {
340
+ t.plan(3);
341
+ function multiply(a, b, cb) { cb(null, a * b); }
342
+ function add(a, b, cb) { cb(null, a + b); }
343
+ var locals = { multiply: multiply, add: add };
344
+ var fn = pcode('a, b, cb', [
345
+ 'm := multiply(a, b)',
346
+ 's := add(m, a)',
347
+ 'cb(err, m, s)'
348
+ ], locals);
349
+
350
+ fn(2, 3, function (err, m, s) {
351
+ t.deepEqual(err, null, 'should not be any error');
352
+ t.equal(m, 6);
353
+ t.equal(s, 8);
354
+ t.end();
355
+ });
356
+ });
357
+
358
+ test('use pcodeDefine with events', function (t) {
359
+ t.plan(8);
360
+ function multiply(a, b, cb) { cb(null, a * b); }
361
+ function add(a, b, cb) { cb(null, a + b); }
362
+
363
+ var locals = { multiply: multiply, add: add };
364
+ var fn = pcode('a, b, cb', [
365
+ 'm := multiply(a, b)',
366
+ 's := add(m, a)',
367
+ 'cb(err, m, s)'
368
+ ], locals);
369
+
370
+ var collector = new EventCollector();
371
+ collector.capture(fn, 'task.complete');
372
+
373
+ fn(2, 3, function (err, m, s) {
374
+ t.deepEqual(err, null, 'should not be any error');
375
+ t.equal(m, 6);
376
+ t.equal(s, 8);
377
+ var events = collector.list();
378
+ t.equal(events.length, 2, 'should have seen two task compl events');
379
+ t.equal(events[0].task.name, 'multiply', 'name matches');
380
+ t.deepEqual(events[0].task.results, [6], 'results match');
381
+ t.equal(events[1].task.name, 'add', 'name matches');
382
+ t.deepEqual(events[1].task.results, [8], 'results match');
383
+ t.end();
384
+ });
385
+ });
386
+
387
+ test('use pcodeDefine.selectFirst with events', function (t) {
388
+ t.plan(7);
389
+ function noSuccess(a, b, cb) {
390
+ setTimeout(function () { cb(null); }, 100); // returns undefined result
391
+ }
392
+ function noSuccessNull(a, b, cb) { cb(null, null); } // returns null result
393
+ function add(a, b, cb) { cb(null, a + b); }
394
+
395
+ var locals = { noSuccess: noSuccess, noSuccessNull: noSuccessNull, add: add };
396
+ var fn = pcode.selectFirst('a, b, cb', [
397
+ 'c := noSuccess(a, b)',
398
+ 'c := noSuccessNull(a, b)',
399
+ 'c := add(a, b)',
400
+ 'c := noSuccess(a, b)',
401
+ 'cb(err, c)'
402
+ ], locals);
403
+
404
+ var collector = new EventCollector();
405
+ collector.capture(fn, 'task.complete');
406
+
407
+ fn(2, 3, function (err, c) {
408
+ t.deepEqual(err, null, 'should not be any error');
409
+ t.equal(c, 5);
410
+ var events = collector.list();
411
+ t.equal(events.length, 3, 'should have seen two task compl events');
412
+ t.equal(events[0].task.name, 'noSuccess', 'name matches');
413
+ t.equal(events[1].task.name, 'noSuccessNull', 'name matches');
414
+ t.equal(events[2].task.name, 'add', 'name matches');
415
+ t.deepEqual(events[2].task.results, [5], 'results match');
416
+ t.end();
417
+ });
418
+ });
419
+
420
+ test('use pcodeDefine events emit to global emitter', function (t) {
421
+ t.plan(8);
422
+ function multiply(a, b, cb) { cb(null, a * b); }
423
+ function add(a, b, cb) { cb(null, a + b); }
424
+
425
+ var locals = { multiply: multiply, add: add };
426
+ var fn = pcode('a, b, cb', [
427
+ 'm := multiply(a, b)',
428
+ 's := add(m, a)',
429
+ 'cb(err, m, s)'
430
+ ], locals);
431
+
432
+ var collector = new EventCollector();
433
+ collector.capture(pcode, 'task.complete'); // the global react emitter
434
+
435
+ fn(2, 3, function (err, m, s) {
436
+ t.deepEqual(err, null, 'should not be any error');
437
+ t.equal(m, 6);
438
+ t.equal(s, 8);
439
+ var events = collector.list();
440
+ t.equal(events.length, 2, 'should have seen two task compl events');
441
+ t.equal(events[0].task.name, 'multiply', 'name matches');
442
+ t.deepEqual(events[0].task.results, [6], 'results match');
443
+ t.equal(events[1].task.name, 'add', 'name matches');
444
+ t.deepEqual(events[1].task.results, [8], 'results match');
445
+ t.end();
446
+ });
447
+ });
448
+
@@ -20,7 +20,7 @@ test('execOptions as first param', function (t) {
20
20
 
21
21
  var execOptions = {
22
22
  reactExecOptions: true,
23
- outputStyle: 'callback'
23
+ outputStyle: 'cb'
24
24
  };
25
25
 
26
26
  fn(execOptions, 2, 3, function (err, c) {
@@ -30,3 +30,4 @@ test('execOptions as first param', function (t) {
30
30
  });
31
31
  });
32
32
 
33
+
@@ -2,11 +2,12 @@
2
2
 
3
3
  var test = require('tap').test;
4
4
 
5
- var FinalCbTask = require('../lib/finalcb-task.js');
5
+ var tskutil = require('../lib/task.js');
6
+
6
7
 
7
8
  test('undefined cb throws exception', function (t) {
8
9
  var fn = function () {
9
- var finalTask = FinalCbTask.create({}, undefined);
10
+ var finalTask = tskutil.createOutTask({}, undefined);
10
11
  };
11
12
  t.throws(fn, new Error('callback is not a function'));
12
13
  t.end();
@@ -14,7 +15,7 @@ test('undefined cb throws exception', function (t) {
14
15
 
15
16
  test('null cb throws exception', function (t) {
16
17
  var fn = function () {
17
- var finalTask = FinalCbTask.create({}, null);
18
+ var finalTask = tskutil.createOutTask({}, null);
18
19
  };
19
20
  t.throws(fn, new Error('callback is not a function'));
20
21
  t.end();
@@ -22,7 +23,7 @@ test('null cb throws exception', function (t) {
22
23
 
23
24
  test('cb needs to be a function or throws exception', function (t) {
24
25
  var fn = function () {
25
- var finalTask = FinalCbTask.create({}, 'foo');
26
+ var finalTask = tskutil.createOutTask({}, 'foo');
26
27
  };
27
28
  t.throws(fn, new Error('callback is not a function'));
28
29
  t.end();
@@ -30,7 +31,7 @@ test('cb needs to be a function or throws exception', function (t) {
30
31
 
31
32
  test('valid fn creates outTask', function (t) {
32
33
  function foo() { }
33
- var finalTask = FinalCbTask.create({ a: ['bar', 'baz']}, foo);
34
+ var finalTask = tskutil.createOutTask({ a: ['bar', 'baz']}, foo);
34
35
  t.equal(finalTask.f, foo);
35
36
  t.deepEqual(finalTask.a, ['bar', 'baz']);
36
37
  t.end();
@@ -5,8 +5,9 @@ var test = require('tap').test;
5
5
  var inputParser = require('../lib/input-parser.js');
6
6
 
7
7
  test('parser parses input args', function (t) {
8
+ function myCb() { }
8
9
  var ast = { inParams: ['a', 'b'] };
9
- var parsedInput = inputParser([10, 20], ast);
10
+ var parsedInput = inputParser([10, 20, myCb], ast);
10
11
  t.deepEqual(parsedInput.args, [10, 20]);
11
12
  t.deepEqual(parsedInput.options, inputParser.defaultExecOptions);
12
13
  t.end();
@@ -43,20 +44,23 @@ test('parser parses input args with extra args', function (t) {
43
44
  });
44
45
 
45
46
  test('parser pulls react exec option off arg list', function (t) {
47
+ function myCb() { }
46
48
  var ast = { inParams: ['a', 'b'] };
47
49
  var execOptions = { reactExecOptions: true, foo: 10 };
48
- var parsedInput = inputParser([execOptions, 10, 20], ast);
50
+ var parsedInput = inputParser([execOptions, 10, 20, myCb], ast);
49
51
  t.deepEqual(parsedInput.args, [10, 20]);
50
- t.deepEqual(parsedInput.options, { reactExecOptions: true, outputStyle: 'callback', foo: 10 });
52
+ t.deepEqual(parsedInput.options, { reactExecOptions: true, outputStyle: 'cb', foo: 10 });
51
53
  t.end();
52
54
  });
53
55
 
54
56
  test('parser pulls react exec options off arg list and merges from left to right', function (t) {
57
+ function myCb() { }
55
58
  var ast = { inParams: ['a', 'b'] };
56
59
  var execOptions = { reactExecOptions: true, foo: 12, bar: 24 };
57
60
  var execOptions2 = { reactExecOptions: true, bar: 36, baz: 'hello' };
58
- var parsedInput = inputParser([execOptions, execOptions2, 10, 20], ast);
61
+ var parsedInput = inputParser([execOptions, execOptions2, 10, 20, myCb], ast);
59
62
  t.deepEqual(parsedInput.args, [10, 20]);
60
- t.deepEqual(parsedInput.options, { reactExecOptions: true, outputStyle: 'callback', foo: 12, bar: 36, baz: 'hello' });
63
+ t.deepEqual(parsedInput.options, { reactExecOptions: true, outputStyle: 'cb', foo: 12, bar: 36, baz: 'hello' });
61
64
  t.end();
62
- });
65
+ });
66
+