diff --git a/packages/cli/src/services/check-parser/package-files/__tests__/package-manager.spec.ts b/packages/cli/src/services/check-parser/package-files/__tests__/package-manager.spec.ts index dbf945c7..d7f1f3e6 100644 --- a/packages/cli/src/services/check-parser/package-files/__tests__/package-manager.spec.ts +++ b/packages/cli/src/services/check-parser/package-files/__tests__/package-manager.spec.ts @@ -632,4 +632,10 @@ describe('PathLookup', () => { expect(await lookup.lookupPath('node')).toBeDefined() expect(await lookup.lookupPath('checkly-no-such-executable-xyz')).toBeUndefined() }) + + it('detects the presence of an executable on PATH and throws for one that is missing', async () => { + const lookup = new PathLookup() + await expect(lookup.detectPresence('node')).resolves.toBeUndefined() + await expect(lookup.detectPresence('checkly-no-such-executable-xyz')).rejects.toThrow() + }) }) diff --git a/packages/cli/src/services/check-parser/package-files/package-manager.ts b/packages/cli/src/services/check-parser/package-files/package-manager.ts index 2fce6bc9..041957f5 100644 --- a/packages/cli/src/services/check-parser/package-files/package-manager.ts +++ b/packages/cli/src/services/check-parser/package-files/package-manager.ts @@ -819,15 +819,8 @@ export class PathLookup { } } - // FIXME(RED-887): the missing `await` below means `foundPath` is a - // Promise — always defined — so this never throws and executable - // detection always "succeeds". Fixing it changes package-manager - // detection outcomes on machines that lack the executable, so it is - // tracked as a follow-up rather than fixed in passing; use lookupPath() - // for a working check. - // eslint-disable-next-line require-await async detectPresence (executable: string): Promise { - const foundPath = this.lookupPath(executable) + const foundPath = await this.lookupPath(executable) if (foundPath === undefined) { throw new NotDetectedError() }