ignore_from_gitignore.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. 'use strict';
  2. var tap = require('tap');
  3. var path = require('path');
  4. var spawn = require('child_process').spawn;
  5. var concat = require('concat-stream');
  6. var stripFullStack = require('./common').stripFullStack;
  7. var tapeBin = path.join(process.cwd(), 'bin/tape');
  8. tap.test('Should pass with ignoring', { skip: process.platform === 'win32' }, function (tt) {
  9. tt.plan(2);
  10. var tc = function (rows) {
  11. tt.same(stripFullStack(rows.toString('utf8')), [
  12. 'TAP version 13',
  13. '# (anonymous)',
  14. 'ok 1 should be truthy',
  15. '# (anonymous)',
  16. 'ok 2 test/stub1',
  17. '# (anonymous)',
  18. 'ok 3 test/stub2',
  19. '# (anonymous)',
  20. 'ok 4 test/sub/stub1',
  21. '# (anonymous)',
  22. 'ok 5 test/sub/stub2',
  23. '# (anonymous)',
  24. 'ok 6 Should print',
  25. '',
  26. '1..6',
  27. '# tests 6',
  28. '# pass 6',
  29. '',
  30. '# ok',
  31. '',
  32. ''
  33. ]);
  34. };
  35. var ps = spawn(tapeBin, ['**/*.js', '-i', '.ignore'], { cwd: path.join(__dirname, 'ignore') });
  36. ps.stdout.pipe(concat(tc));
  37. ps.on('exit', function (code) {
  38. tt.equal(code, 0); // code 0
  39. });
  40. });
  41. tap.test('Should pass', { skip: process.platform === 'win32' }, function (tt) {
  42. tt.plan(2);
  43. var tc = function (rows) {
  44. tt.same(stripFullStack(rows.toString('utf8')), [
  45. 'TAP version 13',
  46. '# (anonymous)',
  47. 'not ok 1 Should not print',
  48. ' ---',
  49. ' operator: fail',
  50. ' at: Test.<anonymous> ($TEST/ignore/fake_node_modules/stub1.js:$LINE:$COL)',
  51. ' stack: |-',
  52. ' Error: Should not print',
  53. ' [... stack stripped ...]',
  54. ' at Test.<anonymous> ($TEST/ignore/fake_node_modules/stub1.js:$LINE:$COL)',
  55. ' [... stack stripped ...]',
  56. ' ...',
  57. '# (anonymous)',
  58. 'not ok 2 Should not print',
  59. ' ---',
  60. ' operator: fail',
  61. ' at: Test.<anonymous> ($TEST/ignore/fake_node_modules/stub2.js:$LINE:$COL)',
  62. ' stack: |-',
  63. ' Error: Should not print',
  64. ' [... stack stripped ...]',
  65. ' at Test.<anonymous> ($TEST/ignore/fake_node_modules/stub2.js:$LINE:$COL)',
  66. ' [... stack stripped ...]',
  67. ' ...',
  68. '# (anonymous)',
  69. 'ok 3 should be truthy',
  70. '# (anonymous)',
  71. 'ok 4 test/stub1',
  72. '# (anonymous)',
  73. 'ok 5 test/stub2',
  74. '# (anonymous)',
  75. 'ok 6 test/sub/stub1',
  76. '# (anonymous)',
  77. 'ok 7 test/sub/stub2',
  78. '# (anonymous)',
  79. 'ok 8 Should print',
  80. '',
  81. '1..8',
  82. '# tests 8',
  83. '# pass 6',
  84. '# fail 2',
  85. '',
  86. ''
  87. ]);
  88. };
  89. var ps = spawn(tapeBin, ['**/*.js'], { cwd: path.join(__dirname, 'ignore') });
  90. ps.stdout.pipe(concat(tc));
  91. ps.on('exit', function (code) {
  92. tt.equal(code, 1);
  93. });
  94. });
  95. tap.test('Should fail when ignore file does not exist', { skip: process.platform === 'win32' }, function (tt) {
  96. tt.plan(3);
  97. var testStdout = function (rows) {
  98. tt.same(rows.toString('utf8'), '');
  99. };
  100. var testStderr = function (rows) {
  101. tt.ok((/^ENOENT[:,] no such file or directory,? (?:open )?'\$TEST\/ignore\/.gitignore'\n$/m).test(stripFullStack(rows.toString('utf8')).join('\n')));
  102. };
  103. var ps = spawn(tapeBin, ['**/*.js', '-i'], { cwd: path.join(__dirname, 'ignore') });
  104. ps.stdout.pipe(concat(testStdout));
  105. ps.stderr.pipe(concat(testStderr));
  106. ps.on('exit', function (code) {
  107. tt.equal(code, 2);
  108. });
  109. });