Use fake config file for entire Config spec

This commit is contained in:
Max Brunsfeld 2014-12-29 23:50:00 -08:00
parent 637b2b0aba
commit 5c730415b7
2 changed files with 14 additions and 13 deletions

View File

@ -9,6 +9,8 @@ describe "Config", ->
beforeEach ->
dotAtomPath = temp.path('dot-atom-dir')
atom.config.configDirPath = dotAtomPath
atom.config.configFilePath = path.join(atom.config.configDirPath, "atom.config.cson")
describe ".get(keyPath, {scope, sources, excludeSources})", ->
it "allows a key path's value to be read", ->
@ -553,7 +555,6 @@ describe "Config", ->
describe "when ~/.atom/config.json exists", ->
it "writes any non-default properties to ~/.atom/config.json", ->
atom.config.configFilePath = path.join(atom.config.configDirPath, "atom.config.json")
atom.config.set("a.b.c", 1)
atom.config.set("a.b.d", 2)
atom.config.set("x.y.z", 3)
@ -562,13 +563,12 @@ describe "Config", ->
CSON.writeFileSync.reset()
atom.config.save()
expect(CSON.writeFileSync.argsForCall[0][0]).toBe path.join(atom.config.configDirPath, "atom.config.json")
expect(CSON.writeFileSync.argsForCall[0][0]).toBe atom.config.configFilePath
writtenConfig = CSON.writeFileSync.argsForCall[0][1]
expect(writtenConfig).toEqual global: atom.config.settings
describe "when ~/.atom/config.json doesn't exist", ->
it "writes any non-default properties to ~/.atom/config.cson", ->
atom.config.configFilePath = path.join(atom.config.configDirPath, "atom.config.cson")
atom.config.set("a.b.c", 1)
atom.config.set("a.b.d", 2)
atom.config.set("x.y.z", 3)
@ -604,8 +604,6 @@ describe "Config", ->
describe ".loadUserConfig()", ->
beforeEach ->
atom.config.configDirPath = dotAtomPath
atom.config.configFilePath = path.join(atom.config.configDirPath, "atom.config.cson")
expect(fs.existsSync(atom.config.configDirPath)).toBeFalsy()
atom.config.setSchema 'foo',
type: 'object'
@ -709,8 +707,6 @@ describe "Config", ->
type: 'integer'
default: 12
atom.config.configDirPath = dotAtomPath
atom.config.configFilePath = path.join(atom.config.configDirPath, "atom.config.cson")
expect(fs.existsSync(atom.config.configDirPath)).toBeFalsy()
fs.writeFileSync atom.config.configFilePath, """
global:

View File

@ -317,8 +317,6 @@ class Config
@configFilePath = fs.resolve(@configDirPath, 'config', ['json', 'cson'])
@configFilePath ?= path.join(@configDirPath, 'config.cson')
@transactDepth = 0
@prioritiesBySource = {}
@prioritiesBySource[@getUserConfigPath()] = 1000
###
Section: Config Subscription
@ -595,7 +593,7 @@ class Config
@scopedSettingsStore.removePropertiesForSourceAndSelector(source, scopeSelector)
_.setValueForKeyPath(settings, keyPath, undefined)
settings = withoutEmptyObjects(settings)
@set(null, settings, {scopeSelector, source, priority: @prioritiesBySource[source]}) if settings?
@set(null, settings, {scopeSelector, source, priority: @priorityForSource(source)}) if settings?
@save() unless @configFileHasErrors
else
@scopedSettingsStore.removePropertiesForSource(source)
@ -942,12 +940,19 @@ class Config
Section: Private Scoped Settings
###
priorityForSource: (source) ->
if source is @getUserConfigPath()
1000
else
0
emitChangeEvent: ->
@emitter.emit 'did-change' unless @transactDepth > 0
resetUserScopedSettings: (newScopedSettings) ->
@scopedSettingsStore.removePropertiesForSource(@getUserConfigPath())
@scopedSettingsStore.addProperties(@getUserConfigPath(), newScopedSettings, priority: @prioritiesBySource[@getUserConfigPath()])
source = @getUserConfigPath()
@scopedSettingsStore.removePropertiesForSource(source)
@scopedSettingsStore.addProperties(source, newScopedSettings, priority: @priorityForSource(source))
@emitChangeEvent()
addScopedSettings: (source, selector, value, options) ->
@ -968,7 +973,7 @@ class Config
settingsBySelector = {}
settingsBySelector[selector] = value
@scopedSettingsStore.addProperties(source, settingsBySelector, priority: @prioritiesBySource[source])
@scopedSettingsStore.addProperties(source, settingsBySelector, priority: @priorityForSource(source))
@emitChangeEvent()
getRawScopedValue: (scopeDescriptor, keyPath, options) ->