dedupe.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. 'use strict';
  2. /*jshint asi: true */
  3. var test = require('tap').test
  4. var dedupe = require('../');
  5. var count = require('./fixtures/count');
  6. function reset() {
  7. var files = [
  8. './fixtures/pack1/common/dep-uno/foo'
  9. , './fixtures/pack1/common/dep-uno/bar'
  10. , './fixtures/pack1/common/dep-dos/foo'
  11. , './fixtures/pack2/common/dep-uno/foo'
  12. , './fixtures/pack2/common/dep-uno/bar'
  13. ].map(require.resolve);
  14. files.forEach(function (k) { delete require.cache[k] });
  15. dedupe.deactivate();
  16. dedupe.reset();
  17. count.count = 0;
  18. }
  19. test('\nactive: when I require pack1/common/dep-uno/foo and pack2/common/dep-uno/foo', function (t) {
  20. reset()
  21. dedupe.activate('.js');
  22. var foo1 = require('./fixtures/pack1/common/dep-uno/foo');
  23. var foo2 = require('./fixtures/pack2/common/dep-uno/foo');
  24. t.equal(count.count, 1, 'loads it only once')
  25. t.equal(foo1.foo, 'foobiloo', 'returns exports 1')
  26. t.equal(foo2.foo, 'foobiloo', 'returns exports 2')
  27. t.end()
  28. })
  29. test('\nactive: when I require pack1/common/dep-dos/foo and pack2/common/dep-uno/foo', function (t) {
  30. reset()
  31. dedupe.activate('.js');
  32. var foo1 = require('./fixtures/pack1/common/dep-dos/foo');
  33. var foo2 = require('./fixtures/pack2/common/dep-uno/foo');
  34. t.equal(count.count, 2, 'loads it twice')
  35. t.equal(foo1.foo, 'foobiloo', 'returns exports 1')
  36. t.equal(foo2.foo, 'foobiloo', 'returns exports 2')
  37. t.end()
  38. })
  39. test('\nactive: when I require pack1/common/dep-uno/foo and pack1/common/dep-uno/bar', function (t) {
  40. reset()
  41. dedupe.activate('.js');
  42. var foo = require('./fixtures/pack1/common/dep-uno/foo');
  43. var bar = require('./fixtures/pack1/common/dep-uno/bar');
  44. t.equal(count.count, 2, 'loads it twice')
  45. t.equal(foo.foo, 'foobiloo', 'returns exports 1')
  46. t.equal(bar.foo, 'foobiloo', 'returns exports 2')
  47. t.end()
  48. })
  49. test('\nactive: when I require pack1/common/dep-uno/bar and pack2/common/dep-uno/bar', function (t) {
  50. reset()
  51. dedupe.activate('.js');
  52. var bar1 = require('./fixtures/pack1/common/dep-uno/bar');
  53. var bar2 = require('./fixtures/pack2/common/dep-uno/bar');
  54. t.equal(count.count, 1, 'loads it only once')
  55. t.equal(bar1.foo, 'foobiloo', 'returns exports 1')
  56. t.equal(bar2.foo, 'foobiloo', 'returns exports 2')
  57. t.end()
  58. })
  59. test('\nactive then deactivated: when I require pack1/common/dep-uno/foo and pack2/common/dep-uno/foo', function (t) {
  60. reset()
  61. dedupe.activate('.js');
  62. var foo1 = require('./fixtures/pack1/common/dep-uno/foo');
  63. dedupe.deactivate('.js');
  64. var foo2 = require('./fixtures/pack2/common/dep-uno/foo');
  65. t.equal(count.count, 2, 'loads it twice')
  66. t.equal(foo1.foo, 'foobiloo', 'returns exports 1')
  67. t.equal(foo2.foo, 'foobiloo', 'returns exports 2')
  68. t.end()
  69. })
  70. test('\nactive: subdir 3, when I require pack1/common/dep-uno/foo and pack2/common/dep-uno/foo', function (t) {
  71. reset()
  72. dedupe.activate('.js', 3);
  73. var foo1 = require('./fixtures/pack1/common/dep-uno/foo');
  74. var foo2 = require('./fixtures/pack2/common/dep-uno/foo');
  75. t.equal(count.count, 2, 'loads it twice since only two subdirs match')
  76. t.equal(foo1.foo, 'foobiloo', 'returns exports 1')
  77. t.equal(foo2.foo, 'foobiloo', 'returns exports 2')
  78. t.end()
  79. })