batch.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. const { expect } = require("chai");
  2. const { verify_fsentry } = require("./fsentry");
  3. module.exports = {
  4. name: 'batch',
  5. do: async t => {
  6. let results;
  7. await t.case('path reference resolution', async () => {
  8. results = null;
  9. results = await t.batch('batch', [
  10. {
  11. op: 'mkdir',
  12. as: 'dest_1',
  13. path: t.resolve('q/w'),
  14. create_missing_parents: true,
  15. },
  16. {
  17. op: 'write',
  18. path: t.resolve('$dest_1/file_1.txt'),
  19. },
  20. ], [
  21. 'file 1 contents',
  22. 'file 2 contents',
  23. ]);
  24. console.log('res?', results)
  25. expect(results.length).equal(2);
  26. expect(results[0].name).equal('w');
  27. expect(results[1].path).equal(t.resolve('q/w/file_1.txt'));
  28. });
  29. await t.case('batch mkdir and write', async () => {
  30. results = null;
  31. results = await t.batch('batch', [
  32. {
  33. op: 'mkdir',
  34. path: t.resolve('test_x_1_dir'),
  35. overwrite: true,
  36. },
  37. {
  38. op: 'write',
  39. path: t.resolve('test_x_1.txt'),
  40. },
  41. {
  42. op: 'mkdir',
  43. path: t.resolve('test_x_2_dir'),
  44. },
  45. {
  46. op: 'write',
  47. path: t.resolve('test_x_2.txt'),
  48. }
  49. ], [
  50. 'first file',
  51. 'second file',
  52. ]);
  53. console.log('res?', results)
  54. expect(results.length).equal(4);
  55. for ( const result of results ) {
  56. // await verify_fsentry(t, result)
  57. }
  58. });
  59. await t.case('path reference resolution (without dedupe)', async () => {
  60. results = null;
  61. results = await t.batch('batch', [
  62. {
  63. op: 'mkdir',
  64. as: 'dest_1',
  65. path: t.resolve('q/w'),
  66. create_missing_parents: true,
  67. },
  68. {
  69. op: 'write',
  70. path: t.resolve('$dest_1/file_1.txt'),
  71. },
  72. ], [
  73. 'file 1 contents',
  74. ]);
  75. console.log('res?', results)
  76. expect(results.length).equal(2);
  77. expect(results[0].name).equal('w');
  78. expect(results[1].path).equal(t.resolve('q/w/file_1.txt'));
  79. });
  80. // Test for path reference resolution
  81. await t.case('path reference resolution', async () => {
  82. results = null;
  83. results = await t.batch('batch', [
  84. {
  85. op: 'mkdir',
  86. as: 'dest_1',
  87. path: t.resolve('q/w'),
  88. create_missing_parents: true,
  89. },
  90. {
  91. op: 'write',
  92. path: t.resolve('$dest_1/file_1.txt'),
  93. },
  94. ], [
  95. 'file 1 contents',
  96. 'file 2 contents',
  97. ]);
  98. console.log('res?', results)
  99. expect(results.length).equal(2);
  100. expect(results[0].name).equal('w');
  101. expect(results[1].path).equal(t.resolve('q/w/file_1.txt'));
  102. });
  103. // Test for a single write
  104. await t.case('single write', async () => {
  105. results = null;
  106. results = await t.batch('batch', [
  107. {
  108. op: 'write',
  109. path: t.resolve('just_one_file.txt'),
  110. },
  111. ], [
  112. 'file 1 contents',
  113. ]);
  114. console.log('res?', results)
  115. });
  116. }
  117. };