mirror of https://github.com/jkjoy/sunpeiwen.git
74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
'use strict'
|
|
|
|
const assert = require('assert')
|
|
const { exec: _exec } = require('child_process')
|
|
const { platform } = require('os')
|
|
const path = require('path')
|
|
const { promisify: pify } = require('util')
|
|
|
|
const exec = pify(_exec)
|
|
|
|
const { trueCasePath, trueCasePathSync } = require('../')
|
|
|
|
const expected = path.join(__dirname, 'fixture/fOoBaR/BAZ')
|
|
const requested = expected.toLowerCase()
|
|
|
|
function testSync() {
|
|
assert.equal(trueCasePathSync(requested), expected, 'trueCasePathSync works')
|
|
}
|
|
|
|
function testAsync() {
|
|
return trueCasePath(requested).then((actual) =>
|
|
assert.equal(actual, expected, 'trueCasePath (async) works')
|
|
)
|
|
}
|
|
|
|
function testRelative() {
|
|
assert.equal(
|
|
trueCasePathSync(requested.replace(process.cwd() + '/', '')),
|
|
expected,
|
|
'works with relative paths'
|
|
)
|
|
}
|
|
|
|
function testSpecialChars() {
|
|
assert.equal(
|
|
trueCasePathSync('test/fixture/F[U&N%K)Y'),
|
|
path.join(__dirname, 'fixture/f[u&n%k)y'),
|
|
'works with file names w/ special chars'
|
|
)
|
|
}
|
|
|
|
async function testSharedHostingWorkaround() {
|
|
await exec('mkdir -p fixture/home/casey', { cwd: __dirname })
|
|
await exec('touch fixture/home/casey/fOoBaR', { cwd: __dirname })
|
|
await exec('chmod 100 fixture/home', { cwd: __dirname })
|
|
|
|
assert.throws(() => trueCasePathSync('fixture/home/casey/foobar', __dirname))
|
|
|
|
assert.equal(
|
|
trueCasePathSync('foobar', path.join(__dirname, 'fixture/home/casey')),
|
|
path.join(__dirname, 'fixture/home/casey/fOoBaR')
|
|
)
|
|
assert.equal(
|
|
await trueCasePath('foobar', path.join(__dirname, 'fixture/home/casey')),
|
|
path.join(__dirname, 'fixture/home/casey/fOoBaR')
|
|
)
|
|
}
|
|
|
|
Promise.all([
|
|
// testSync(),
|
|
// testRelative(),
|
|
// testAsync(),
|
|
testSpecialChars(),
|
|
platform() === 'linux' ? testSharedHostingWorkaround() : Promise.resolve()
|
|
])
|
|
.then(() => {
|
|
console.log('All tests passed!')
|
|
})
|
|
.catch((err) => {
|
|
console.log('Test failed!')
|
|
console.error(err)
|
|
process.exitCode = 1
|
|
})
|