$
This commit is contained in:
0
node_modules/true-case-path/test/fixture/fOoBaR/BAZ
generated
vendored
Normal file
0
node_modules/true-case-path/test/fixture/fOoBaR/BAZ
generated
vendored
Normal file
0
node_modules/true-case-path/test/fixture/f[u&n%k)y
generated
vendored
Normal file
0
node_modules/true-case-path/test/fixture/f[u&n%k)y
generated
vendored
Normal file
73
node_modules/true-case-path/test/index.js
generated
vendored
Normal file
73
node_modules/true-case-path/test/index.js
generated
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
'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
|
||||
})
|
Reference in New Issue
Block a user