See #875. Add test for looking upwards .jsbeautifyrc files

This commit is contained in:
Glavin Wiechert 2016-04-01 18:59:07 -03:00
parent 02f02a41e6
commit 5b3e28b250
2 changed files with 82 additions and 2 deletions

View File

@ -3,6 +3,11 @@ beautifiers = new Beautifiers()
Beautifier = require "../src/beautifiers/beautifier" Beautifier = require "../src/beautifiers/beautifier"
Languages = require('../src/languages/') Languages = require('../src/languages/')
_ = require('lodash') _ = require('lodash')
fs = require('fs')
path = require('path')
Promise = require("bluebird")
temp = require('temp')
temp.track()
# Use the command `window:run-package-specs` (cmd-alt-ctrl-p) to run specs. # Use the command `window:run-package-specs` (cmd-alt-ctrl-p) to run specs.
# #
@ -29,6 +34,9 @@ describe "Atom-Beautify", ->
# Return promise # Return promise
return activationPromise return activationPromise
afterEach ->
temp.cleanupSync()
describe "Beautifiers", -> describe "Beautifiers", ->
beautifier = null beautifier = null
@ -263,6 +271,76 @@ describe "Atom-Beautify", ->
describe ".jsbeautifyrc", -> describe ".jsbeautifyrc", ->
it "should look at directories above file", ->
isDone = false
cb = (err) ->
isDone = true
expect(err).toBe(undefined)
runs ->
try
# console.log('runs')
# Make top directory
temp.mkdir('dir1', (err, dirPath) ->
# console.log(arguments)
return cb(err) if err
# Add .jsbeautifyrc file
rcPath = path.join(dirPath, '.jsbeautifyrc')
myData1 = {
indent_size: 1,
indent_char: '\t'
}
myData = JSON.stringify(myData1)
fs.writeFile(rcPath, myData, (err) ->
# console.log(arguments)
return cb(err) if err
# Make next directory
dirPath = path.join(dirPath, 'dir2')
fs.mkdir(dirPath, (err) ->
# console.log(arguments)
return cb(err) if err
# Add .jsbeautifyrc file
rcPath = path.join(dirPath, '.jsbeautifyrc')
myData2 = {
indent_size: 2,
indent_char: ' '
}
myData = JSON.stringify(myData2)
fs.writeFile(rcPath, myData, (err) ->
# console.log(arguments)
return cb(err) if err
Promise.all(beautifier.getOptionsForPath(rcPath, null))
.then((allOptions) ->
# console.log('allOptions', allOptions)
# Extract options
[
editorOptions
configOptions
homeOptions
editorConfigOptions
] = allOptions
projectOptions = allOptions[4..]
# Check that we extracted .jsbeautifyrc files
[config1, config2] = projectOptions[-2..]
expect(_.get(config1,'_default.indent_size')).toBe(myData1.indent_size)
expect(_.get(config2,'_default.indent_size')).toBe(myData2.indent_size)
expect(_.get(config1,'_default.indent_char')).toBe(myData1.indent_char)
expect(_.get(config2,'_default.indent_char')).toBe(myData2.indent_char)
cb()
)
)
)
)
)
catch err
cb(err)
waitsFor ->
isDone
describe "Package settings", -> describe "Package settings", ->
getOptions = (callback) -> getOptions = (callback) ->

View File

@ -414,7 +414,7 @@ module.exports = class Beautifiers extends EventEmitter
# Look for .jsbeautifierrc in file and home path, check env variables # Look for .jsbeautifierrc in file and home path, check env variables
getConfig : (startPath, upwards = true) -> getConfig : (startPath, upwards = true) ->
# console.log('getConfig', startPath, upwards)
# Verify that startPath is a string # Verify that startPath is a string
startPath = ( if ( typeof startPath is "string") then startPath else "") startPath = ( if ( typeof startPath is "string") then startPath else "")
return {} unless startPath return {} unless startPath
@ -422,6 +422,7 @@ module.exports = class Beautifiers extends EventEmitter
# Get the path to the config file # Get the path to the config file
configPath = @findConfig(".jsbeautifyrc", startPath, upwards) configPath = @findConfig(".jsbeautifyrc", startPath, upwards)
logger.verbose('configPath', configPath, startPath, upwards)
externalOptions = undefined externalOptions = undefined
if configPath if configPath
fs ?= require("fs") fs ?= require("fs")
@ -449,7 +450,8 @@ module.exports = class Beautifiers extends EventEmitter
externalOptions = {} externalOptions = {}
else else
externalOptions = {} externalOptions = {}
externalOptions return externalOptions
getOptionsForPath : (editedFilePath, editor) -> getOptionsForPath : (editedFilePath, editor) ->
languageNamespaces = @languages.namespaces languageNamespaces = @languages.namespaces