diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts b/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts index 6b3f7f8173a02..9bdab8776c86c 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts @@ -54,12 +54,16 @@ export function nodeMajorVersion(): number { * Find a file by walking up parent directories */ export function findUp(name: string, directory: string = process.cwd()): string | undefined { - const { root } = path.parse(directory); - if (directory === root && !fs.existsSync(path.join(directory, name))) { - return undefined; - } + const absoluteDirectory = path.resolve(directory); + if (fs.existsSync(path.join(directory, name))) { return directory; } - return findUp(name, path.dirname(directory)); + + const { root } = path.parse(absoluteDirectory); + if (absoluteDirectory === root) { + return undefined; + } + + return findUp(name, path.dirname(absoluteDirectory)); } diff --git a/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts b/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts index 026f2bcb519e3..a85b0064cef85 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts @@ -10,4 +10,10 @@ test('findUp', () => { // Starting at a specific path expect(findUp('util.test.ts', path.join(__dirname, 'integ-handlers'))).toMatch(/aws-lambda-nodejs\/test$/); + + // Non existing file starting at a non existing relative path + expect(findUp('not-to-be-found.txt', 'non-existing/relative/path')).toBe(undefined); + + // Starting at a relative path + expect(findUp('util.test.ts', 'test/integ-handlers')).toMatch(/aws-lambda-nodejs\/test$/); });