mirror of
https://github.com/atom/atom.git
synced 2026-02-12 23:55:10 -05:00
67 lines
2.6 KiB
JavaScript
67 lines
2.6 KiB
JavaScript
/** @babel */
|
|
|
|
const assert = require('assert')
|
|
const fs = require('fs')
|
|
const sinon = require('sinon')
|
|
const path = require('path')
|
|
|
|
const dalek = require('../lib/dalek')
|
|
|
|
describe('dalek', function () {
|
|
describe('enumerate', function () {
|
|
let availablePackages = {}
|
|
let realPaths = {}
|
|
let bundledPackages = []
|
|
let packageDirPaths = []
|
|
let sandbox = null
|
|
|
|
beforeEach(function () {
|
|
availablePackages = {
|
|
'an-unduplicated-installed-package': path.join('Users', 'username', '.atom', 'packages', 'an-unduplicated-installed-package'),
|
|
'duplicated-package': path.join('Users', 'username', '.atom', 'packages', 'duplicated-package'),
|
|
'unduplicated-package': path.join(`${atom.getLoadSettings().resourcePath}`, 'node_modules', 'unduplicated-package')
|
|
}
|
|
|
|
atom.devMode = false
|
|
bundledPackages = ['duplicated-package', 'unduplicated-package']
|
|
packageDirPaths = [path.join('Users', 'username', '.atom', 'packages')]
|
|
sandbox = sinon.sandbox.create()
|
|
sandbox.stub(dalek, 'realpath').callsFake((filePath) => Promise.resolve(realPaths[filePath] || filePath))
|
|
sandbox.stub(atom.packages, 'isBundledPackage').callsFake((packageName) => { return bundledPackages.includes(packageName) })
|
|
sandbox.stub(atom.packages, 'getAvailablePackageNames').callsFake(() => Object.keys(availablePackages))
|
|
sandbox.stub(atom.packages, 'getPackageDirPaths').callsFake(() => { return packageDirPaths })
|
|
sandbox.stub(fs, 'existsSync').callsFake((candidate) => { return Object.values(availablePackages).includes(candidate) && !candidate.includes(atom.getLoadSettings().resourcePath) })
|
|
})
|
|
|
|
afterEach(function () {
|
|
sandbox.restore()
|
|
})
|
|
|
|
it('returns a list of duplicate names', async function () {
|
|
assert.deepEqual(await dalek.enumerate(), ['duplicated-package'])
|
|
})
|
|
|
|
describe('when in dev mode', function () {
|
|
beforeEach(function () {
|
|
atom.devMode = true
|
|
})
|
|
|
|
it('always returns an empty list', async function () {
|
|
assert.deepEqual(await dalek.enumerate(), [])
|
|
})
|
|
})
|
|
|
|
describe('when a package is symlinked into the package directory', async function () {
|
|
beforeEach(function () {
|
|
const realPath = path.join('Users', 'username', 'duplicated-package')
|
|
const packagePath = path.join('Users', 'username', '.atom', 'packages', 'duplicated-package')
|
|
realPaths[packagePath] = realPath
|
|
})
|
|
|
|
it('is not included in the list of duplicate names', async function () {
|
|
assert.deepEqual(await dalek.enumerate(), [])
|
|
})
|
|
})
|
|
})
|
|
})
|