From 79cda989595a7da4a9fd3f39120da5001f68899c Mon Sep 17 00:00:00 2001 From: Jack Robinson Date: Mon, 19 Nov 2018 17:57:58 +0000 Subject: [PATCH] fix: ensure empty string is added into argv._ (#140) --- lib/tokenize-arg-string.js | 1 + test/tokenize-arg-string.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/tokenize-arg-string.js b/lib/tokenize-arg-string.js index 6c8d23ef..73e14cd6 100644 --- a/lib/tokenize-arg-string.js +++ b/lib/tokenize-arg-string.js @@ -25,6 +25,7 @@ module.exports = function (argString) { // don't split the string if we're in matching // opening or closing single and double quotes. if (c === opening) { + if (!args[i]) args[i] = '' opening = null continue } else if ((c === "'" || c === '"') && !opening) { diff --git a/test/tokenize-arg-string.js b/test/tokenize-arg-string.js index 2f7cffcc..8bb6a95f 100644 --- a/test/tokenize-arg-string.js +++ b/test/tokenize-arg-string.js @@ -32,6 +32,20 @@ describe('TokenizeArgString', function () { args[2].should.equal('--bar=foo bar') }) + it('handles single quoted empty string', function () { + var args = tokenizeArgString('--foo \'\' --bar=\'\'') + args[0].should.equal('--foo') + args[1].should.equal('') + args[2].should.equal('--bar=') + }) + + it('handles double quoted empty string', function () { + var args = tokenizeArgString('--foo "" --bar=""') + args[0].should.equal('--foo') + args[1].should.equal('') + args[2].should.equal('--bar=') + }) + it('handles quoted string with embeded quotes', function () { var args = tokenizeArgString('--foo "hello \'world\'" --bar=\'foo "bar"\'') args[0].should.equal('--foo')