From 20758ef859f4c84f42b154fd6aa7f4df219e2679 Mon Sep 17 00:00:00 2001 From: Donnie D'Amato Date: Thu, 25 Jun 2020 23:41:08 -0400 Subject: [PATCH] Test coverage in bin --- bin/create-symbols.js | 6 +----- src/createSymbols.js | 10 +++++++--- test/bin/create-symbols.test.js | 18 +++++++++++++++++- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/bin/create-symbols.js b/bin/create-symbols.js index 430ef9f..9730d98 100755 --- a/bin/create-symbols.js +++ b/bin/create-symbols.js @@ -20,11 +20,7 @@ createSymbols(args.input).then(async (symbols) => { throw new Error('Cannot overwrite input directory, please provide another directory for output.'); } - try { - await fs.ensureDir(args.output); - } catch (err) { - throw new Error(`Output directory "${args.output}" does not exist.`); - } + await fs.ensureDir(args.output); await writeSymbolSvgFiles(symbols, { outputDir: args.output }); await writeSymbolReferenceFile(symbols, { outputDir: args.output, type: args.type }); diff --git a/src/createSymbols.js b/src/createSymbols.js index ccff196..78f187c 100755 --- a/src/createSymbols.js +++ b/src/createSymbols.js @@ -17,11 +17,15 @@ export default async function createSymbols(pathOrObject) { try { const files = await fs.promises.readdir(pathOrObject); const sources = await Promise.all(files.map(async (file) => { + const filepath = path.resolve(pathOrObject, file); + if (!fs.statSync(filepath).isFile()) { + return; + } const fileName = path.parse(file).name; - const source = await fs.promises.readFile(path.resolve(pathOrObject, file)); + const source = await fs.promises.readFile(filepath); return { [fileName]: source.toString() }; - })); - const flattened = sources.reduce(( acc, source ) => Object.assign(acc, source), {}); + })) + const flattened = sources.filter(Boolean).reduce(( acc, source ) => Object.assign(acc, source), {}); return createSymbols(flattened); } catch (err) { throw new Error(err); diff --git a/test/bin/create-symbols.test.js b/test/bin/create-symbols.test.js index 4434f0d..b102de3 100644 --- a/test/bin/create-symbols.test.js +++ b/test/bin/create-symbols.test.js @@ -54,5 +54,21 @@ describe('create-symbols.js', async function () { const { x } = esmImport(esmPath); expect(exists).to.be.true; expect(x).to.be.a('string'); - }) + }); + + it('should throw if no symbols are found in directory', async function () { + try { + await execPromise(`${createSymbolsProcess} -i test/bin/fixtures/none -o test/bin/output`); + } catch (err) { + expect(err).to.exist; + } + }); + + it('should throw if attempting to overwrite in input directory', async function () { + try { + await execPromise(`${createSymbolsProcess} -i test/bin/fixtures -o test/bin/fixtures`); + } catch (err) { + expect(err).to.exist; + } + }); }); \ No newline at end of file