mirror of
https://github.com/pnpm/pnpm.git
synced 2026-01-18 11:58:45 -05:00
* test: move expect blocks (without other changes) to end of test This is required for the refactor in the next commit. The log statements have to run before consuming the output stream, otherwise the output stream will be empty. * test: fix swallowed Jest expect errors in `default-reporter` package * test: fix expected to match actual values in default-reporter tests * refactor: remove redundant `.pipe(take(1))` With the refactor to use `firstValueFrom`, the `take(1)` is now redundant in many places. ```ts firstValueFrom(output$.pipe(take(1))) ``` ```ts firstValueFrom(output$) ```
112 lines
2.6 KiB
TypeScript
112 lines
2.6 KiB
TypeScript
import { setTimeout } from 'node:timers/promises'
|
|
import { type Config } from '@pnpm/config'
|
|
import { scopeLogger } from '@pnpm/core-loggers'
|
|
import { toOutput$ } from '@pnpm/default-reporter'
|
|
import { createStreamParser } from '@pnpm/logger'
|
|
import { firstValueFrom } from 'rxjs'
|
|
|
|
const NO_OUTPUT = Symbol('test should not log anything')
|
|
|
|
test('does not print scope of non-recursive install in a workspace', async () => {
|
|
const output$ = toOutput$({
|
|
context: {
|
|
argv: ['install'],
|
|
},
|
|
streamParser: createStreamParser(),
|
|
})
|
|
|
|
scopeLogger.debug({
|
|
selected: 1,
|
|
workspacePrefix: '/home/src',
|
|
})
|
|
|
|
const output = await Promise.race([
|
|
firstValueFrom(output$),
|
|
setTimeout(10).then(() => NO_OUTPUT),
|
|
])
|
|
|
|
expect(output).toEqual(NO_OUTPUT)
|
|
})
|
|
|
|
test('prints scope of recursive install in a workspace when not all packages are selected', async () => {
|
|
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)
|
|
|
|
const output = await firstValueFrom(output$)
|
|
expect(output).toBe('Scope: 2 of 10 workspace projects')
|
|
})
|
|
|
|
test('prints scope of recursive install in a workspace when all packages are selected', async () => {
|
|
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)
|
|
|
|
const output = await firstValueFrom(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', async () => {
|
|
const output$ = toOutput$({
|
|
context: {
|
|
argv: ['install'],
|
|
config: { recursive: true } as Config,
|
|
},
|
|
streamParser: createStreamParser(),
|
|
})
|
|
|
|
scopeLogger.debug({
|
|
selected: 2,
|
|
total: 10,
|
|
})
|
|
|
|
expect.assertions(1)
|
|
|
|
const output = await firstValueFrom(output$)
|
|
expect(output).toBe('Scope: 2 of 10 projects')
|
|
})
|
|
|
|
test('prints scope of recursive install not in a workspace when all packages are selected', async () => {
|
|
const output$ = toOutput$({
|
|
context: {
|
|
argv: ['install'],
|
|
config: { recursive: true } as Config,
|
|
},
|
|
streamParser: createStreamParser(),
|
|
})
|
|
|
|
scopeLogger.debug({
|
|
selected: 10,
|
|
total: 10,
|
|
})
|
|
|
|
expect.assertions(1)
|
|
|
|
const output = await firstValueFrom(output$)
|
|
expect(output).toBe('Scope: all 10 projects')
|
|
})
|