From f2bd0ec10e7e6edb11bd97fadbd9d986a1ed02fb Mon Sep 17 00:00:00 2001 From: Klemek Date: Sun, 23 Jun 2019 14:44:32 +0200 Subject: [PATCH] Fixed config merge --- package.json | 2 +- src/config.js | 4 ++++ test/config.test.js | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9a2eb96..2dac4ab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gitblog.md", - "version": "1.1.2", + "version": "1.1.3", "description": "A static blog using Markdown pulled from your git repository.", "main": "src/server.js", "dependencies": { diff --git a/src/config.js b/src/config.js index dca7338..23b532b 100644 --- a/src/config.js +++ b/src/config.js @@ -10,6 +10,10 @@ const fs = require('fs'); const merge = (ref, src) => { if (typeof ref !== typeof src) { return ref; + } else if (ref.length && !src.length) { + return ref; + } else if (ref.length && src.length) { + return src; } else if (typeof ref === 'object') { const out = {}; Object.keys(ref).forEach((key) => out[key] = merge(ref[key], src[key])); diff --git a/test/config.test.js b/test/config.test.js index 74bf82b..04b1bcf 100644 --- a/test/config.test.js +++ b/test/config.test.js @@ -64,4 +64,18 @@ test('wrong config fixed', () => { expect(config).toBeDefined(); expect(config['node_port']).toBe(3000); expect(config['data_dir']).toBe('data2'); +}); + +test('array parsing', () => { + fs.writeFileSync(configFile, '{"home":{"hidden":["item1","item2"]}}'); + const config = require('../src/config')(); + expect(config).toBeDefined(); + expect(config['home']['hidden']).toEqual(['item1', 'item2']); +}); + +test('array fix', () => { + fs.writeFileSync(configFile, '{"home":{"hidden":{}}}'); + const config = require('../src/config')(); + expect(config).toBeDefined(); + expect(config['home']['hidden']).toEqual(['.ejs']); }); \ No newline at end of file