removedir.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var fs = require('fs'),
  2. path = require('path'),
  3. vfs = require('../lib/fs'),
  4. TEST_DIR = path.join(__dirname, 'test-dir');
  5. module.exports = {
  6. setUp : function(done) {
  7. fs.mkdirSync(TEST_DIR);
  8. done();
  9. },
  10. tearDown : function(done) {
  11. fs.rmdirSync(TEST_DIR);
  12. done();
  13. },
  14. 'should remove empty directory' : function(test) {
  15. var dir = path.join(TEST_DIR, 'dir');
  16. fs.mkdirSync(dir);
  17. vfs.removeDir(dir)
  18. .then(
  19. function() {
  20. return vfs.exists(dir);
  21. },
  22. function() {
  23. test.ok(false);
  24. })
  25. .always(function(promise) {
  26. test.ok(!promise.valueOf());
  27. test.done();
  28. });
  29. },
  30. 'should remove directory tree' : function(test) {
  31. var dir = path.join(TEST_DIR, 'dir');
  32. fs.mkdirSync(dir);
  33. fs.mkdirSync(path.join(dir, 'a'));
  34. fs.writeFileSync(path.join(dir, 'a', 'file'), 'file');
  35. fs.mkdirSync(path.join(dir, 'a', 'b'));
  36. fs.writeFileSync(path.join(dir, 'a', 'b', 'file1'), 'file1');
  37. fs.writeFileSync(path.join(dir, 'a', 'b', 'file2'), 'file2');
  38. vfs.removeDir(dir)
  39. .then(
  40. function() {
  41. return vfs.exists(dir);
  42. },
  43. function() {
  44. test.ok(false);
  45. })
  46. .always(function(promise) {
  47. test.ok(!promise.valueOf());
  48. test.done();
  49. });
  50. },
  51. 'should not remove file' : function(test) {
  52. var filePath = path.join(TEST_DIR, 'file');
  53. fs.writeFileSync(filePath, 'file');
  54. vfs.removeDir(filePath)
  55. .then(
  56. function() {
  57. test.ok(false);
  58. },
  59. function(err) {
  60. test.equal(err.code, 'ENOTDIR');
  61. return vfs.exists(filePath);
  62. })
  63. .always(function(promise) {
  64. test.ok(promise.valueOf());
  65. fs.unlinkSync(filePath);
  66. test.done();
  67. });
  68. }
  69. };