test: scripts preserve symlinks on Node.js >= 7.1.0

This commit is contained in:
zkochan
2016-11-10 01:55:41 +02:00
parent c66ae6ad71
commit aaa34e0855
6 changed files with 49 additions and 1 deletions

View File

@@ -2,7 +2,7 @@ import {PnpmOptions} from '../types'
import {sync as runScriptSync} from '../runScript'
export default function (input: string[], opts: PnpmOptions) {
runScriptSync('npm', ['run'].concat(input), {
return runScriptSync('npm', ['run'].concat(input), {
cwd: process.cwd(),
stdio: 'inherit',
})

View File

@@ -5,3 +5,4 @@ import './uninstall'
import './link'
import './prune'
import './cache'
import './run'

View File

@@ -74,3 +74,7 @@ cd ..;
cd sh-hello-world;
npm publish;
cd ..;
cd symlinks-preserved;
npm publish;
cd ..;

View File

@@ -0,0 +1,4 @@
'use strict'
const fs = require('fs')
module.exports = fs.realpathSync(__filename) !== __filename

View File

@@ -0,0 +1,4 @@
{
"name": "symlinks-preserved",
"version": "1.0.0"
}

35
test/run.ts Normal file
View File

@@ -0,0 +1,35 @@
import tape = require('tape')
import promisifyTape from 'tape-promise'
const test = promisifyTape(tape)
import semver = require('semver')
import fs = require('mz/fs')
import prepare from './support/prepare'
import testDefaults from './support/testDefaults'
import {installPkgs} from '../lib'
import runCmd from '../lib/cmd/run'
const preserveSymlinksEnvVariable = semver.satisfies(process.version, '>=7.1.0')
test('run node in scripts with preserve symlinks mode', async function (t) {
if (!preserveSymlinksEnvVariable) {
t.skip('this test is only for Node.js >= 7.1.0')
return
}
prepare({
scripts: {
test: 'node index'
}
})
await fs.writeFile('index.js', `
const fs = require('fs')
const symlinksPreserved = require('symlinks-preserved')
fs.writeFileSync('test-result', symlinksPreserved, 'utf8')
`, 'utf8')
await installPkgs(['symlinks-preserved'], testDefaults())
const result = runCmd(['test'], {})
t.equal(result.status, 0, 'executable exited with success')
t.equal(await fs.readFile('test-result', 'utf8'), 'true', 'symlinks are preserved')
})