Skip to content

Commit ce34215

Browse files
authored
fix: omit duplicate functions from list of bundled files (#6535)
* test: failing test for duplicate function names * fix: omit duplicate functions from list of bundled files
1 parent 3166e00 commit ce34215

File tree

4 files changed

+11
-1
lines changed

4 files changed

+11
-1
lines changed

packages/build/src/plugins_core/functions/utils.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ const getRelativeFunctionMainFiles = async function ({ featureFlags, functionsSr
1616

1717
const zisiFeatureFlags = getZisiFeatureFlags(featureFlags)
1818
const functions = await listFunctions(functionsSrc, { featureFlags: zisiFeatureFlags })
19-
return functions.map(({ mainFile }) => relative(functionsSrc, mainFile))
19+
const dedupedFunctions = new Map(functions.map((func) => [func.name, func]))
20+
const relativeMainFiles = [...dedupedFunctions.values()].map(({ mainFile }) => relative(functionsSrc, mainFile))
21+
return relativeMainFiles
2022
}
2123

2224
export const getUserAndInternalFunctions = ({
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const handler = () => true
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const handler = () => true

packages/build/tests/core/tests.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,12 @@ test('Bundles functions from the `.netlify/functions-internal` directory even if
589589
t.snapshot(normalizeOutput(output))
590590
})
591591

592+
test('Removes duplicate function names from the list of processed functions', async (t) => {
593+
const output = await new Fixture('./fixtures/functions_duplicate_names').runWithBuild()
594+
t.true(normalizeOutput(output).includes(`- function_one.js`))
595+
t.false(normalizeOutput(output).includes(`- function_one.ts`))
596+
})
597+
592598
test.serial('`rustTargetDirectory` is passed to zip-it-and-ship-it only when running in buildbot', async (t) => {
593599
const runCount = 4
594600
const mockZipFunctions = sinon.stub().resolves()

0 commit comments

Comments
 (0)