87 lines
2.5 KiB
JavaScript
87 lines
2.5 KiB
JavaScript
/* eslint-env mocha */
|
|
|
|
const assert = require('assert')
|
|
const os = require('os')
|
|
const proxyquire = require('proxyquire')
|
|
|
|
const platforms = [
|
|
['aix', `${os.homedir()}/.cache/linusu`],
|
|
['darwin', `${os.homedir()}/Library/Caches/linusu`],
|
|
['freebsd', `${os.homedir()}/.cache/linusu`],
|
|
['linux', `${os.homedir()}/.cache/linusu`],
|
|
['netbsd', `${os.homedir()}/.cache/linusu`],
|
|
['openbsd', `${os.homedir()}/.cache/linusu`],
|
|
['sunos', `${os.homedir()}/.cache/linusu`],
|
|
['win32', `${os.homedir()}/AppData/Local/linusu/Cache`]
|
|
]
|
|
|
|
platforms.forEach((platform) => {
|
|
describe(platform[0], () => {
|
|
let cachedir
|
|
|
|
before(() => {
|
|
const os = {
|
|
platform () { return platform[0] }
|
|
}
|
|
|
|
cachedir = proxyquire('./', { os })
|
|
})
|
|
|
|
it('should give the correct path', () => {
|
|
const actual = cachedir('linusu')
|
|
const expected = platform[1]
|
|
|
|
assert.strictEqual(actual, expected)
|
|
})
|
|
|
|
if (platform[0] === 'win32') {
|
|
describe('when LOCALAPPDATA is set', () => {
|
|
it('should give the correct path', () => {
|
|
const oldLocalAppData = process.env.LOCALAPPDATA
|
|
process.env.LOCALAPPDATA = 'X:/LocalAppData'
|
|
const actual = cachedir('linusu')
|
|
process.env.LOCALAPPDATA = oldLocalAppData
|
|
const expected = 'X:/LocalAppData/linusu/Cache'
|
|
|
|
assert.strictEqual(actual, expected)
|
|
})
|
|
})
|
|
}
|
|
|
|
it('should throw on bad input', () => {
|
|
assert.throws(() => cachedir())
|
|
assert.throws(() => cachedir(''))
|
|
assert.throws(() => cachedir({}))
|
|
assert.throws(() => cachedir([]))
|
|
assert.throws(() => cachedir(null))
|
|
assert.throws(() => cachedir(1337))
|
|
assert.throws(() => cachedir('test!!'))
|
|
assert.throws(() => cachedir(undefined))
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('fallback', () => {
|
|
it('should fallback to posix with warning', () => {
|
|
const originalError = console.error
|
|
|
|
try {
|
|
const logs = []
|
|
console.error = (msg) => logs.push(msg)
|
|
|
|
const os = { platform: () => 'test' }
|
|
const cachedir = proxyquire('./', { os })
|
|
|
|
const actual = cachedir('linusu')
|
|
const expected = `${os.homedir()}/.cache/linusu`
|
|
assert.strictEqual(actual, expected)
|
|
|
|
assert.deepStrictEqual(logs, [
|
|
`(node:${process.pid}) [cachedir] Warning: the platform "test" is not currently supported by node-cachedir, falling back to "posix". Please file an issue with your platform here: https://github.com/LinusU/node-cachedir/issues/new`
|
|
])
|
|
} finally {
|
|
console.error = originalError
|
|
}
|
|
})
|
|
})
|