|
1 | 1 | const t = require('tap')
|
2 | 2 | const fs = require('node:fs/promises')
|
| 3 | +const nodePath = require('node:path') |
3 | 4 | const { resolve, basename } = require('node:path')
|
4 | 5 | const _mockNpm = require('../../fixtures/mock-npm')
|
5 | 6 | const { cleanTime } = require('../../fixtures/clean-snapshot')
|
@@ -428,4 +429,33 @@ t.test('workspaces', async t => {
|
428 | 429 | t.equal(ws.version, '1.0.0')
|
429 | 430 | t.equal(ws.license, 'ISC')
|
430 | 431 | })
|
| 432 | + t.test('init pkg - installed workspace package', async t => { |
| 433 | + const { npm } = await mockNpm(t, { |
| 434 | + prefixDir: { |
| 435 | + 'package.json': JSON.stringify({ |
| 436 | + name: 'init-ws-test', |
| 437 | + dependencies: { |
| 438 | + '@npmcli/create': '1.0.0', |
| 439 | + }, |
| 440 | + workspaces: ['test/workspace-init-a'], |
| 441 | + }), |
| 442 | + 'test/workspace-init-a': { |
| 443 | + 'package.json': JSON.stringify({ |
| 444 | + version: '1.0.0', |
| 445 | + name: '@npmcli/create', |
| 446 | + bin: { 'init-create': 'index.js' }, |
| 447 | + }), |
| 448 | + 'index.js': `#!/usr/bin/env node |
| 449 | + require('fs').writeFileSync('npm-init-test-success', '') |
| 450 | + console.log('init-create ran')`, |
| 451 | + }, |
| 452 | + }, |
| 453 | + }) |
| 454 | + await npm.exec('install', []) // reify |
| 455 | + npm.config.set('workspace', ['test/workspace-init-b']) |
| 456 | + await npm.exec('init', ['@npmcli']) |
| 457 | + const exists = await fs.stat(nodePath.join( |
| 458 | + npm.prefix, 'test/workspace-init-b', 'npm-init-test-success')) |
| 459 | + t.ok(exists.isFile(), 'bin ran, creating file inside workspace') |
| 460 | + }) |
431 | 461 | })
|
0 commit comments