diff --git a/packages/kbn-es/src/utils/extract_config_files.js b/packages/kbn-es/src/utils/extract_config_files.js index 1ee4ee887fd31..7ad75dcbbf340 100644 --- a/packages/kbn-es/src/utils/extract_config_files.js +++ b/packages/kbn-es/src/utils/extract_config_files.js @@ -55,7 +55,7 @@ exports.extractConfigFiles = function extractConfigFiles(config, dest, options = }; function isFile(dest = '') { - return path.isAbsolute(dest) && path.extname(dest).length > 0; + return path.isAbsolute(dest) && path.extname(dest).length > 0 && fs.existsSync(dest); } function copyFileSync(src, dest) { diff --git a/packages/kbn-es/src/utils/extract_config_files.test.js b/packages/kbn-es/src/utils/extract_config_files.test.js index 0c417536878db..4d47f08cb1345 100644 --- a/packages/kbn-es/src/utils/extract_config_files.test.js +++ b/packages/kbn-es/src/utils/extract_config_files.test.js @@ -47,13 +47,29 @@ test('copies file', () => { expect(fs.writeFileSync.mock.calls[0][0]).toEqual('/es/config/foo.yml'); }); +test('ignores file which does not exist', () => { + fs.existsSync = () => false; + extractConfigFiles(['path=/data/foo.yml'], '/es'); + + expect(fs.readFileSync).not.toHaveBeenCalled(); + expect(fs.writeFileSync).not.toHaveBeenCalled(); +}); + test('ignores non-paths', () => { const config = extractConfigFiles(['foo=bar', 'foo.bar=baz'], '/es'); expect(config).toEqual(['foo=bar', 'foo.bar=baz']); }); +test('keeps regular expressions intact', () => { + fs.existsSync = () => false; + const config = extractConfigFiles(['foo=bar', 'foo.bar=/https?://127.0.0.1(:[0-9]+)?/'], '/es'); + + expect(config).toEqual(['foo=bar', 'foo.bar=/https?://127.0.0.1(:[0-9]+)?/']); +}); + test('ignores directories', () => { + fs.existsSync = () => true; const config = extractConfigFiles(['path=/data/foo.yml', 'foo.bar=/data/bar'], '/es'); expect(config).toEqual(['path=foo.yml', 'foo.bar=/data/bar']);