mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-10 18:18:56 -04:00
fix: combine global and local filterLog hook with AND (#3966)
This commit is contained in:
5
.changeset/perfect-cats-matter.md
Normal file
5
.changeset/perfect-cats-matter.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/pnpmfile": patch
|
||||
---
|
||||
|
||||
Combine global and local filterLog hook with AND
|
||||
@@ -54,7 +54,7 @@ export default function requireHooks (
|
||||
prefix,
|
||||
})
|
||||
}
|
||||
for (const hookName of ['readPackage', 'afterAllResolved', 'filterLog']) {
|
||||
for (const hookName of ['readPackage', 'afterAllResolved']) {
|
||||
if (globalHooks[hookName] && hooks[hookName]) {
|
||||
const globalHookContext = createReadPackageHookContext(globalPnpmfile.filename, prefix, hookName)
|
||||
const localHookContext = createReadPackageHookContext(pnpmFile.filename, prefix, hookName)
|
||||
@@ -75,6 +75,13 @@ export default function requireHooks (
|
||||
cookedHooks[hookName] = (pkg: object) => hook(pkg, context)
|
||||
}
|
||||
}
|
||||
const globalFilterLog = globalHooks.filterLog
|
||||
const filterLog = hooks.filterLog
|
||||
if (globalFilterLog != null && filterLog != null) {
|
||||
cookedHooks.filterLog = (log: Log) => globalFilterLog(log) && filterLog(log)
|
||||
} else {
|
||||
cookedHooks.filterLog = globalFilterLog ?? filterLog
|
||||
}
|
||||
return cookedHooks
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import path from 'path'
|
||||
import { requirePnpmfile, BadReadPackageHookError } from '@pnpm/pnpmfile'
|
||||
import { requireHooks, requirePnpmfile, BadReadPackageHookError } from '@pnpm/pnpmfile'
|
||||
|
||||
test('ignoring a pnpmfile that exports undefined', () => {
|
||||
const pnpmfile = requirePnpmfile(path.join(__dirname, 'pnpmfiles/undefined.js'), __dirname)
|
||||
@@ -22,3 +22,21 @@ test('readPackage hook run fails when returned dependencies is not an object ',
|
||||
pnpmfile.hooks.readPackage({})
|
||||
}).toThrow(new BadReadPackageHookError(pnpmfilePath, 'readPackage hook returned package manifest object\'s property \'dependencies\' must be an object.'))
|
||||
})
|
||||
|
||||
test('filterLog hook combines with the global hook', () => {
|
||||
const globalPnpmfile = path.join(__dirname, 'pnpmfiles/globalFilterLog.js')
|
||||
const pnpmfile = path.join(__dirname, 'pnpmfiles/filterLog.js')
|
||||
const hooks = requireHooks(__dirname, { globalPnpmfile, pnpmfile })
|
||||
|
||||
expect(hooks.filterLog).toBeDefined()
|
||||
expect(hooks.filterLog!({
|
||||
name: 'pnpm:summary',
|
||||
level: 'error',
|
||||
prefix: 'test',
|
||||
})).toBeTruthy()
|
||||
expect(hooks.filterLog!({
|
||||
name: 'pnpm:summary',
|
||||
level: 'debug',
|
||||
prefix: 'test',
|
||||
})).toBeFalsy()
|
||||
})
|
||||
|
||||
7
packages/pnpmfile/test/pnpmfiles/filterLog.js
Normal file
7
packages/pnpmfile/test/pnpmfiles/filterLog.js
Normal file
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
hooks: {filterLog}
|
||||
}
|
||||
|
||||
function filterLog(log) {
|
||||
return log.level === 'debug' || log.level === 'error'
|
||||
}
|
||||
7
packages/pnpmfile/test/pnpmfiles/globalFilterLog.js
Normal file
7
packages/pnpmfile/test/pnpmfiles/globalFilterLog.js
Normal file
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
hooks: {filterLog}
|
||||
}
|
||||
|
||||
function filterLog(log) {
|
||||
return log.level === 'error'
|
||||
}
|
||||
Reference in New Issue
Block a user