From befcff973aa0fd9b0f3a73932a39d36e9eb85bf2 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Thu, 11 Jan 2018 20:14:56 +0900 Subject: [PATCH] fix property parser --- src/shared/commands/parsers.js | 2 +- test/shared/commands/parsers.test.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/shared/commands/parsers.js b/src/shared/commands/parsers.js index af51338..fb37d2a 100644 --- a/src/shared/commands/parsers.js +++ b/src/shared/commands/parsers.js @@ -30,7 +30,7 @@ const mustNumber = (v) => { const parseSetOption = (word, types) => { let [key, value] = word.split('='); - if (!value) { + if (value === undefined) { value = !key.startsWith('no'); key = value ? key : key.slice(2); } diff --git a/test/shared/commands/parsers.test.js b/test/shared/commands/parsers.test.js index 200323c..0a1960c 100644 --- a/test/shared/commands/parsers.test.js +++ b/test/shared/commands/parsers.test.js @@ -9,6 +9,12 @@ describe("shared/commands/parsers", () => { expect(value).to.equal('utf-8'); }); + it('parse set empty string', () => { + let [key, value] = parsers.parseSetOption('encoding=', { encoding: 'string' }); + expect(key).to.equal('encoding'); + expect(value).to.equal(''); + }); + it('parse set string', () => { let [key, value] = parsers.parseSetOption('history=50', { history: 'number' }); expect(key).to.equal('history'); @@ -34,6 +40,7 @@ describe("shared/commands/parsers", () => { it('throws error on invalid property', () => { expect(() => parsers.parseSetOption('charset=utf-8', { charset: 'number' })).to.throw(Error, 'Not number'); expect(() => parsers.parseSetOption('charset=utf-8', { charset: 'boolean' })).to.throw(Error, 'Invalid'); + expect(() => parsers.parseSetOption('charset=', { charset: 'boolean' })).to.throw(Error, 'Invalid'); expect(() => parsers.parseSetOption('smoothscroll', { smoothscroll: 'string' })).to.throw(Error, 'Invalid'); expect(() => parsers.parseSetOption('smoothscroll', { smoothscroll: 'number' })).to.throw(Error, 'Invalid'); })