hunk.code_window:   await installPkgs(['ajv@4.10.4', 'ajv-keywords@1.5.0'], testDefaults())
     t.ok(await exists(path.join(NM, '.localhost+4873', 'ajv-keywords', '1.5.0', 'ajv@4.10.4', NM, 'ajv')), 'peer dependency is linked')
   })
   test('peer dependencies are linked', async t => {
     const project = prepare(t)
     await installPkgs(['abc-parent-with-ab', 'abc-grand-parent-with-c', 'peer-c@2.0.0'], testDefaults())
     const pkgVariationsDir = path.join(NM, '.localhost+4873', 'abc', '1.0.0')
  
hunk.labels: keep keep keep keep add keep keep keep keep keep
hunk.after_edit: test('peer dependency is linked on subsequent install', async t => {
     const project = prepare(t)
     await installPkgs(['ajv@4.10.4'], testDefaults())
     await installPkgs(['ajv-keywords@1.5.0'], testDefaults())
     t.ok(await exists(path.join(NM, '.localhost+4873', 'ajv-keywords', '1.5.0', 'ajv@4.10.4', NM, 'ajv')), 'peer dependency is linked')
   })
  
hunk.file_path: test/install/peerDependencies.ts
hunk.type: add
file: import installChecks = require('pnpm-install-checks')
  import logger from 'pnpm-logger'
  import {Package} from '../types'
  import pnpmPkg from '../pnpmPkgJson'
  import {FetchedPackage} from './fetch'
  
  const installCheckLogger = logger('install-check')
  
  export default async function getIsInstallable (
    pkgId: string,
    pkg: Package,
    fetchedPkg: FetchedPackage,
    options: {
      optional: boolean,
      engineStrict: boolean,
      nodeVersion: string,
    }
  ): Promise<boolean> {
    const warn = await installChecks.checkPlatform(pkg) || await installChecks.checkEngine(pkg, {
      pnpmVersion: pnpmPkg.version,
      nodeVersion: options.nodeVersion
    })
  
    if (!warn) return true
  
    installCheckLogger.warn(warn)
  
    if (!options.engineStrict && !options.optional) return true
  
    await fetchedPkg.abort()
  
    if (!options.optional) throw warn
  
    logger.warn({
      message: `Skipping failed optional dependency ${pkgId}`,
      warn,
    })
  
    return false
  }
  