mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
We assign a value into ::loadSettings anyway in a spec, so there's not much point leaving it a method. Eventually I'd like to pass all these settings in when constructing the Atom object and eliminate awareness of the loadSettings altogether from the Atom global.
56 lines
1.8 KiB
CoffeeScript
56 lines
1.8 KiB
CoffeeScript
{_, fs, Git} = require 'atom'
|
|
path = require 'path'
|
|
require './spec-helper'
|
|
|
|
requireSpecs = (specDirectory, specType) ->
|
|
for specFilePath in fs.listTreeSync(specDirectory) when /-spec\.coffee$/.test specFilePath
|
|
require specFilePath
|
|
|
|
# Set spec directory on spec for setting up the project in spec-helper
|
|
setSpecDirectory(specDirectory)
|
|
|
|
setSpecField = (name, value) ->
|
|
specs = jasmine.getEnv().currentRunner().specs()
|
|
return if specs.length is 0
|
|
for index in [specs.length-1..0]
|
|
break if specs[index][name]?
|
|
specs[index][name] = value
|
|
|
|
setSpecType = (specType) ->
|
|
setSpecField('specType', specType)
|
|
|
|
setSpecDirectory = (specDirectory) ->
|
|
setSpecField('specDirectory', specDirectory)
|
|
|
|
runAllSpecs = ->
|
|
{resourcePath} = atom.loadSettings
|
|
# Only run core specs when resource path is the Atom repository
|
|
if Git.exists(resourcePath)
|
|
requireSpecs(path.join(resourcePath, 'spec'))
|
|
setSpecType('core')
|
|
|
|
fixturesPackagesPath = path.join(__dirname, 'fixtures', 'packages')
|
|
packagePaths = atom.packages.getAvailablePackageNames().map (packageName) ->
|
|
atom.packages.resolvePackagePath(packageName)
|
|
packagePaths = _.groupBy packagePaths, (packagePath) ->
|
|
if packagePath.indexOf("#{fixturesPackagesPath}#{path.sep}") is 0
|
|
'fixtures'
|
|
else if packagePath.indexOf("#{resourcePath}#{path.sep}") is 0
|
|
'bundled'
|
|
else
|
|
'user'
|
|
|
|
# Run bundled package specs
|
|
requireSpecs(path.join(packagePath, 'spec')) for packagePath in packagePaths.bundled ? []
|
|
setSpecType('bundled')
|
|
|
|
# Run user package specs
|
|
requireSpecs(path.join(packagePath, 'spec')) for packagePath in packagePaths.user ? []
|
|
setSpecType('user')
|
|
|
|
if specDirectory = atom.loadSettings.specDirectory
|
|
requireSpecs(specDirectory)
|
|
setSpecType('user')
|
|
else
|
|
runAllSpecs()
|