mirror of
https://github.com/atom/atom.git
synced 2026-01-22 21:38:10 -05:00
Dont fail when there are thigns to set with array and object types
This commit is contained in:
@@ -644,6 +644,15 @@ describe "Config", ->
|
||||
nestedObject:
|
||||
nestedBool: true
|
||||
|
||||
it 'will set only the values that adhere to the schema', ->
|
||||
expect(atom.config.set 'foo.bar',
|
||||
anInt: 'nope'
|
||||
nestedObject:
|
||||
nestedBool: true
|
||||
).toBe true
|
||||
expect(atom.config.get('foo.bar.anInt')).toEqual 12
|
||||
expect(atom.config.get('foo.bar.nestedObject.nestedBool')).toEqual true
|
||||
|
||||
describe 'when the value has an "array" type', ->
|
||||
beforeEach ->
|
||||
schema =
|
||||
|
||||
@@ -404,16 +404,27 @@ Config.addSchemaValidators
|
||||
coercion: (value, schema) ->
|
||||
throw new Error('Value must be an object') if typeof value isnt 'object'
|
||||
return value unless schema.properties?
|
||||
newValue = {}
|
||||
for prop, childSchema of schema.properties
|
||||
value[prop] = @executeSchemaValidators(value[prop], childSchema) if prop of value
|
||||
value
|
||||
continue unless prop of value
|
||||
try
|
||||
newValue[prop] = @executeSchemaValidators(value[prop], childSchema)
|
||||
catch error
|
||||
;
|
||||
newValue
|
||||
|
||||
'array':
|
||||
coercion: (value, schema) ->
|
||||
throw new Error('Value must be an array') unless Array.isArray(value)
|
||||
itemSchema = schema.items
|
||||
if itemSchema?
|
||||
@executeSchemaValidators(item, itemSchema) for item in value
|
||||
newValue = []
|
||||
for item in value
|
||||
try
|
||||
newValue.push @executeSchemaValidators(item, itemSchema)
|
||||
catch error
|
||||
;
|
||||
newValue
|
||||
else
|
||||
value
|
||||
|
||||
|
||||
Reference in New Issue
Block a user