fix: make feature strings more robust to whitespace (#15602)

Fixes #15594
This commit is contained in:
Jeremy Apthorp 2018-11-06 15:52:06 -08:00 committed by GitHub
parent c52cf01a3c
commit 10969b8c3c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 3 deletions

View file

@ -4,12 +4,12 @@
// - `features` input string
// - `emit` function(key, value) - called for each parsed KV
module.exports = function parseFeaturesString (features, emit) {
features = `${features}`
features = `${features}`.trim()
// split the string by ','
features.split(/,\s*/).forEach((feature) => {
features.split(/\s*,\s*/).forEach((feature) => {
// expected form is either a key by itself or a key/value pair in the form of
// 'key=value'
let [key, value] = feature.split(/\s*=/)
let [key, value] = feature.split(/\s*=\s*/)
if (!key) return
// interpret the value as a boolean, if possible

23
spec/internal-spec.js Normal file
View file

@ -0,0 +1,23 @@
const chai = require('chai')
const { expect } = chai
describe('feature-string parsing', () => {
it('is indifferent to whitespace around keys and values', () => {
const parseFeaturesString = require('@electron/internal/common/parse-features-string')
const checkParse = (string, parsed) => {
const features = {}
parseFeaturesString(string, (k, v) => { features[k] = v })
expect(features).to.deep.equal(parsed)
}
checkParse('a=yes,c=d', { a: true, c: 'd' })
checkParse('a=yes ,c=d', { a: true, c: 'd' })
checkParse('a=yes, c=d', { a: true, c: 'd' })
checkParse('a=yes , c=d', { a: true, c: 'd' })
checkParse(' a=yes , c=d', { a: true, c: 'd' })
checkParse(' a= yes , c=d', { a: true, c: 'd' })
checkParse(' a = yes , c=d', { a: true, c: 'd' })
checkParse(' a = yes , c =d', { a: true, c: 'd' })
checkParse(' a = yes , c = d', { a: true, c: 'd' })
checkParse(' a = yes , c = d ', { a: true, c: 'd' })
})
})