Skip to content

Commit b3c2d11

Browse files
feat: add srcPath property to output of listFunctions (#6561)
* feat: add `srcPath` property to output of `listFunctions` * chore: update test * chore: update snapshot
1 parent 8f577f7 commit b3c2d11

File tree

8 files changed

+176
-11
lines changed

8 files changed

+176
-11
lines changed

packages/build/tests/plugins/snapshots/tests.js.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1929,14 +1929,16 @@ Generated by [AVA](https://avajs.dev).
19291929
"mainFile": "packages/build/tests/plugins/fixtures/functions_list/.netlify/functions-internal/internal_1.js",␊
19301930
"name": "internal_1",␊
19311931
"runtime": "js",␊
1932-
"srcDir": "packages/build/tests/plugins/fixtures/functions_list/.netlify/functions-internal"␊
1932+
"srcDir": "packages/build/tests/plugins/fixtures/functions_list/.netlify/functions-internal",␊
1933+
"srcPath": "packages/build/tests/plugins/fixtures/functions_list/.netlify/functions-internal/internal_1.js"␊
19331934
},␊
19341935
{␊
19351936
"extension": ".js",␊
19361937
"mainFile": "packages/build/tests/plugins/fixtures/functions_list/netlify/functions/user_1.js",␊
19371938
"name": "user_1",␊
19381939
"runtime": "js",␊
1939-
"srcDir": "packages/build/tests/plugins/fixtures/functions_list/netlify/functions"␊
1940+
"srcDir": "packages/build/tests/plugins/fixtures/functions_list/netlify/functions",␊
1941+
"srcPath": "packages/build/tests/plugins/fixtures/functions_list/netlify/functions/user_1.js"␊
19401942
}␊
19411943
]␊
19421944
Binary file not shown.

packages/functions-utils/tests/main.test.ts

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -107,30 +107,42 @@ test('Should allow "fail" option to customize failures', async () => {
107107
expect(fail).toHaveBeenCalledWith('No function source directory was specified')
108108
})
109109

110-
const normalizeFiles = function (fixtureDir, { name, mainFile, runtime, extension, srcDir, srcFile, schedule }) {
110+
const normalizeFiles = function (
111+
fixtureDir,
112+
{ name, mainFile, runtime, extension, srcDir, srcFile, srcPath, schedule },
113+
) {
111114
const mainFileA = normalize(`${fixtureDir}/${mainFile}`)
112115
const srcFileA = srcFile === undefined ? {} : { srcFile: normalize(`${fixtureDir}/${srcFile}`) }
113116
const srcDirA = srcDir ? { srcDir: resolve(fixtureDir, srcDir) } : {}
114-
return { name, mainFile: mainFileA, runtime, extension, schedule, ...srcFileA, ...srcDirA }
117+
const srcPathA = srcPath ? { srcPath: resolve(fixtureDir, srcPath) } : {}
118+
return { name, mainFile: mainFileA, runtime, extension, schedule, ...srcFileA, ...srcDirA, ...srcPathA }
115119
}
116120

117121
test('Can list function main files with list()', async () => {
118122
const fixtureDir = `${FIXTURES_DIR}/list`
119123
const functions = await list(fixtureDir)
120124
expect(sortOn(functions, ['mainFile', 'extension'])).toEqual(
121125
[
122-
{ name: 'four', mainFile: 'four.js/four.js.js', runtime: 'js', extension: '.js', srcDir: 'four.js' },
126+
{
127+
name: 'four',
128+
mainFile: 'four.js/four.js.js',
129+
runtime: 'js',
130+
extension: '.js',
131+
srcDir: 'four.js',
132+
srcPath: 'four.js',
133+
},
123134
{
124135
name: 'one',
125136
mainFile: 'one/index.js',
126137
runtime: 'js',
127138
extension: '.js',
128139
srcDir: 'one',
140+
srcPath: 'one',
129141
},
130-
{ name: 'test', mainFile: 'test', runtime: 'go', extension: '', srcDir: '.' },
131-
{ name: 'test', mainFile: 'test.js', runtime: 'js', extension: '.js', srcDir: '.' },
132-
{ name: 'test', mainFile: 'test.zip', runtime: 'js', extension: '.zip', srcDir: '.' },
133-
{ name: 'two', mainFile: 'two/two.js', runtime: 'js', extension: '.js', srcDir: 'two' },
142+
{ name: 'test', mainFile: 'test', runtime: 'go', extension: '', srcDir: '.', srcPath: 'test' },
143+
{ name: 'test', mainFile: 'test.js', runtime: 'js', extension: '.js', srcDir: '.', srcPath: 'test.js' },
144+
{ name: 'test', mainFile: 'test.zip', runtime: 'js', extension: '.zip', srcDir: '.', srcPath: 'test.zip' },
145+
{ name: 'two', mainFile: 'two/two.js', runtime: 'js', extension: '.js', srcDir: 'two', srcPath: 'two' },
134146
].map(normalizeFiles.bind(null, fixtureDir)),
135147
)
136148
})
@@ -147,13 +159,15 @@ test('Can list all function files with listAll()', async () => {
147159
extension: '.js',
148160
srcFile: 'four.js/four.js.js',
149161
srcDir: 'four.js',
162+
srcPath: 'four.js',
150163
},
151164
{
152165
name: 'four',
153166
mainFile: 'four.js/four.js.js',
154167
runtime: 'js',
155168
extension: '.json',
156169
srcFile: '../../../package.json',
170+
srcPath: 'four.js',
157171
srcDir: 'four.js',
158172
},
159173
{
@@ -162,6 +176,7 @@ test('Can list all function files with listAll()', async () => {
162176
runtime: 'js',
163177
extension: '.js',
164178
srcFile: 'one/index.js',
179+
srcPath: 'one',
165180
srcDir: 'one',
166181
},
167182
{
@@ -170,6 +185,7 @@ test('Can list all function files with listAll()', async () => {
170185
runtime: 'js',
171186
extension: '.json',
172187
srcFile: '../../../package.json',
188+
srcPath: 'one',
173189
srcDir: 'one',
174190
},
175191
{
@@ -178,6 +194,7 @@ test('Can list all function files with listAll()', async () => {
178194
runtime: 'go',
179195
extension: '',
180196
srcFile: 'test',
197+
srcPath: 'test',
181198
srcDir: '.',
182199
},
183200
{
@@ -186,6 +203,7 @@ test('Can list all function files with listAll()', async () => {
186203
runtime: 'js',
187204
extension: '.js',
188205
srcFile: 'test.js',
206+
srcPath: 'test.js',
189207
srcDir: '.',
190208
},
191209
{
@@ -194,6 +212,7 @@ test('Can list all function files with listAll()', async () => {
194212
runtime: 'js',
195213
extension: '.json',
196214
srcFile: '../../../package.json',
215+
srcPath: 'test.js',
197216
srcDir: '.',
198217
},
199218
{
@@ -202,16 +221,34 @@ test('Can list all function files with listAll()', async () => {
202221
runtime: 'js',
203222
extension: '.zip',
204223
srcFile: 'test.zip',
224+
srcPath: 'test.zip',
205225
srcDir: '.',
206226
},
207-
{ name: 'two', mainFile: 'two/two.js', runtime: 'js', extension: '.js', srcFile: 'two/two.js', srcDir: 'two' },
208-
{ name: 'two', mainFile: 'two/two.js', runtime: 'js', extension: '.js', srcFile: 'two/three.js', srcDir: 'two' },
227+
{
228+
name: 'two',
229+
mainFile: 'two/two.js',
230+
runtime: 'js',
231+
extension: '.js',
232+
srcFile: 'two/two.js',
233+
srcPath: 'two',
234+
srcDir: 'two',
235+
},
236+
{
237+
name: 'two',
238+
mainFile: 'two/two.js',
239+
runtime: 'js',
240+
extension: '.js',
241+
srcFile: 'two/three.js',
242+
srcPath: 'two',
243+
srcDir: 'two',
244+
},
209245
{
210246
name: 'two',
211247
mainFile: 'two/two.js',
212248
runtime: 'js',
213249
extension: '.json',
214250
srcFile: '../../../package.json',
251+
srcPath: 'two',
215252
srcDir: 'two',
216253
},
217254
].map(normalizeFiles.bind(null, fixtureDir)),

packages/zip-it-and-ship-it/src/main.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export interface ListedFunction {
3939
excludedRoutes?: Route[]
4040
routes?: ExtendedRoute[]
4141
srcDir?: string
42+
srcPath: string
4243
}
4344

4445
type ListedFunctionFile = ListedFunction & {
@@ -154,6 +155,7 @@ const getListedFunction = function ({
154155
name,
155156
runtime,
156157
srcDir,
158+
srcPath,
157159
}: AugmentedFunctionSource): ListedFunction {
158160
return {
159161
displayName: config.name,
@@ -169,6 +171,7 @@ const getListedFunction = function ({
169171
schedule: staticAnalysisResult?.config?.schedule ?? config.schedule,
170172
inputModuleFormat: staticAnalysisResult?.inputModuleFormat,
171173
srcDir,
174+
srcPath,
172175
}
173176
}
174177

packages/zip-it-and-ship-it/tests/__snapshots__/list_function.test.ts.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ exports[`listFunction > V2 API > listFunction includes metadata properties when
1515
"schedule": undefined,
1616
"srcDir": "v2-api-esm-ts-aliases",
1717
"srcFile": undefined,
18+
"srcPath": "v2-api-esm-ts-aliases/function.ts",
1819
"timeout": undefined,
1920
}
2021
`;

0 commit comments

Comments
 (0)