Skip to content

Commit

Permalink
Merge pull request #9 from hlxjs/issues/use-mkdir-p
Browse files Browse the repository at this point in the history
Use mkdirP
  • Loading branch information
kuu committed Jul 28, 2019
2 parents c464526 + b8fe2f3 commit 92ea1c4
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 60 deletions.
7 changes: 2 additions & 5 deletions file.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const fs = require('fs');
const path = require('path');

const {tryCatch} = require('hlx-util');
const {tryCatch, mkdirP} = require('hlx-util');

function storeData({uri, data}, rootPath) {
if (!data) {
Expand All @@ -26,10 +26,7 @@ function storeData({uri, data}, rootPath) {
}

// Create directory
const dir = path.dirname(localPath);
if (!fs.existsSync(dir) || !fs.lstatSync(dir).isDirectory()) {
fs.mkdirSync(dir, {recursive: true});
}
mkdirP(path.dirname(localPath));

if (typeof data.pipe !== 'function') {
// Text or Buffer
Expand Down
58 changes: 25 additions & 33 deletions test/spec/file.spec.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,26 @@
const test = require('ava');
const sinon = require('sinon');
const proxyquire = require('proxyquire');
const {tryCatch} = require('hlx-util');

test.cb('file.storeData.Buffer', t => {
const mockFs = {
writeFile(path, data, cb) {
setImmediate(() => {
cb(null, path);
});
},
existsSync() {
return true;
},
lstatSync() {
return {
isDirectory() {
return true;
}
};
}
};

const mockUtil = {
tryCatch,
mkdirP() {
// NOP
}
};

delete require.cache[require.resolve('fs')];
const {storeData} = proxyquire('../../file', {fs: mockFs});
const {storeData} = proxyquire('../../file', {fs: mockFs, 'hlx-util': mockUtil});
const spyWriteFile = sinon.spy(mockFs, 'writeFile');

storeData({uri: 'ghi.mp4', data: Buffer.alloc(10)}, '/abc/def/')
Expand All @@ -39,21 +37,18 @@ test.cb('file.storeData.Buffer.path', t => {
setImmediate(() => {
cb(null, path);
});
},
existsSync() {
return true;
},
lstatSync() {
return {
isDirectory() {
return true;
}
};
}
};

const mockUtil = {
tryCatch,
mkdirP() {
// NOP
}
};

delete require.cache[require.resolve('fs')];
const {storeData} = proxyquire('../../file', {fs: mockFs});
const {storeData} = proxyquire('../../file', {fs: mockFs, 'hlx-util': mockUtil});
const spyWriteFile = sinon.spy(mockFs, 'writeFile');

storeData({uri: '/abc/def/ghi/jkl.mp4', data: Buffer.alloc(10)}, '/path/to/')
Expand All @@ -68,21 +63,18 @@ test.cb('file.storeData.Stream', t => {
const mockFs = {
createWriteStream(path) {
return {path};
},
existsSync() {
return true;
},
lstatSync() {
return {
isDirectory() {
return true;
}
};
}
};

const mockUtil = {
tryCatch,
mkdirP() {
// NOP
}
};

delete require.cache[require.resolve('fs')];
const {storeData} = proxyquire('../../file', {fs: mockFs});
const {storeData} = proxyquire('../../file', {fs: mockFs, 'hlx-util': mockUtil});
const spyCreateWriteStream = sinon.spy(mockFs, 'createWriteStream');

const data = {
Expand Down
39 changes: 17 additions & 22 deletions test/spec/writable.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const test = require('ava');
const sinon = require('sinon');
const proxyquire = require('proxyquire');
const HLS = require('hls-parser');
const {tryCatch} = require('hlx-util');

const {Segment} = HLS.types;

Expand Down Expand Up @@ -112,21 +113,18 @@ test.cb('writeStream.onlySegments', t => {
setImmediate(() => {
cb(null, path);
});
},
existsSync() {
return true;
},
lstatSync() {
return {
isDirectory() {
return true;
}
};
}
};

const mockUtil = {
tryCatch,
mkdirP() {
// NOP
}
};

delete require.cache[require.resolve('fs')];
const mockFile = proxyquire('../../file', {fs: mockFs});
const mockFile = proxyquire('../../file', {fs: mockFs, 'hlx-util': mockUtil});
const WriteStream = proxyquire('../../writable', {'./file': mockFile});
const spyWriteFile = sinon.spy(mockFs, 'writeFile');

Expand All @@ -146,21 +144,18 @@ test.cb('writeStream.all', t => {
setImmediate(() => {
cb(null, path);
});
},
existsSync() {
return true;
},
lstatSync() {
return {
isDirectory() {
return true;
}
};
}
};

const mockUtil = {
tryCatch,
mkdirP() {
// NOP
}
};

delete require.cache[require.resolve('fs')];
const mockFile = proxyquire('../../file', {fs: mockFs});
const mockFile = proxyquire('../../file', {fs: mockFs, 'hlx-util': mockUtil});
const WriteStream = proxyquire('../../writable', {'./file': mockFile});
const spyWriteFile = sinon.spy(mockFs, 'writeFile');

Expand Down

0 comments on commit 92ea1c4

Please sign in to comment.