import { type Config } from '@pnpm/config' import { scopeLogger } from '@pnpm/core-loggers' import { toOutput$ } from '@pnpm/default-reporter' import { createStreamParser } from '@pnpm/logger' import { take } from 'rxjs/operators' test('does not print scope of non-recursive install in a workspace', (done) => { const output$ = toOutput$({ context: { argv: ['install'], }, streamParser: createStreamParser(), }) scopeLogger.debug({ selected: 1, workspacePrefix: '/home/src', }) const subscription = output$.subscribe({ complete: () => done(), error: done, next: () => { done('should not log anything') }, }) setTimeout(() => { done() subscription.unsubscribe() }, 10) }) test('prints scope of recursive install in a workspace when not all packages are selected', (done) => { const output$ = toOutput$({ context: { argv: ['install'], config: { recursive: true } as Config, }, streamParser: createStreamParser(), }) scopeLogger.debug({ selected: 2, total: 10, workspacePrefix: '/home/src', }) expect.assertions(1) output$.pipe(take(1)).subscribe({ complete: () => done(), error: done, next: output => { expect(output).toBe('Scope: 2 of 10 workspace projects') }, }) }) test('prints scope of recursive install in a workspace when all packages are selected', (done) => { const output$ = toOutput$({ context: { argv: ['install'], config: { recursive: true } as Config, }, streamParser: createStreamParser(), }) scopeLogger.debug({ selected: 10, total: 10, workspacePrefix: '/home/src', }) expect.assertions(1) output$.pipe(take(1)).subscribe({ complete: () => done(), error: done, next: output => { expect(output).toBe('Scope: all 10 workspace projects') }, }) }) test('prints scope of recursive install not in a workspace when not all packages are selected', (done) => { const output$ = toOutput$({ context: { argv: ['install'], config: { recursive: true } as Config, }, streamParser: createStreamParser(), }) scopeLogger.debug({ selected: 2, total: 10, }) expect.assertions(1) output$.pipe(take(1)).subscribe({ complete: () => done(), error: done, next: output => { expect(output).toBe('Scope: 2 of 10 projects') }, }) }) test('prints scope of recursive install not in a workspace when all packages are selected', (done) => { const output$ = toOutput$({ context: { argv: ['install'], config: { recursive: true } as Config, }, streamParser: createStreamParser(), }) scopeLogger.debug({ selected: 10, total: 10, }) expect.assertions(1) output$.pipe(take(1)).subscribe({ complete: () => done(), error: done, next: output => { expect(output).toBe('Scope: all 10 projects') }, }) })