Skip to content

Commit 251e1cf

Browse files
authored
fix: Fix deployment status when the function name is specified (#225)
1 parent 86494b4 commit 251e1cf

File tree

3 files changed

+45
-7
lines changed

3 files changed

+45
-7
lines changed

info/lib/displayServiceInfo.js

+2-3
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,7 @@ module.exports = {
9696

9797
const getFunctionNameInService = (funcName, service, stage) => {
9898
let funcNameInService = funcName;
99-
funcNameInService = funcNameInService.replace(service, '');
100-
funcNameInService = funcNameInService.replace(stage, '');
101-
funcNameInService = funcNameInService.slice(2, funcNameInService.length);
99+
funcNameInService = funcNameInService.replace(`${service}-`, '');
100+
funcNameInService = funcNameInService.replace(`${stage}-`, '');
102101
return funcNameInService;
103102
};

info/lib/displayServiceInfo.test.js

+38-2
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ describe('DisplayServiceInfo', () => {
1616
serverless = new Serverless();
1717
serverless.service.service = 'my-service';
1818
serverless.service.functions = {
19-
func1: {
19+
'func1': {
2020
handler: 'handler',
2121
events: [{ http: 'foo' }],
2222
},
23-
func2: {
23+
'func2': {
2424
handler: 'handler',
2525
events: [
2626
{
@@ -32,6 +32,11 @@ describe('DisplayServiceInfo', () => {
3232
},
3333
],
3434
},
35+
'my-func3': {
36+
name: 'my-func3',
37+
handler: 'handler',
38+
events: [{ http: 'foo' }],
39+
},
3540
};
3641
serverless.service.provider = {
3742
project: 'my-project',
@@ -131,6 +136,37 @@ describe('DisplayServiceInfo', () => {
131136
});
132137
});
133138

139+
it('should gather the resource data when the function name is specified', () => {
140+
const resources = {
141+
resources: [
142+
{ type: 'resource.which.should.be.filterered', name: 'someResource' },
143+
{
144+
type: 'gcp-types/cloudfunctions-v1:projects.locations.functions',
145+
name: 'my-func3',
146+
},
147+
],
148+
};
149+
150+
const expectedData = {
151+
service: 'my-service',
152+
project: 'my-project',
153+
stage: 'dev',
154+
region: 'us-central1',
155+
resources: {
156+
functions: [
157+
{
158+
name: 'my-func3',
159+
resource: 'https://us-central1-my-project.cloudfunctions.net/my-func3',
160+
},
161+
],
162+
},
163+
};
164+
165+
return googleInfo.gatherData(resources).then((data) => {
166+
expect(data).toEqual(expectedData);
167+
});
168+
});
169+
134170
it('should resolve with empty data if resource type is not matching', () => {
135171
const resources = {
136172
resources: [{ type: 'resource.which.should.be.filterered', name: 'someResource' }],

test/serverless.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ class Serverless {
1212
};
1313
this.service.getFunction = function (functionName) {
1414
//eslint-disable-line
15-
// NOTE the stage is always 'dev'!
16-
this.functions[functionName].name = `${this.service}-dev-${functionName}`;
15+
// NOTE assign the function name only when it is not specified
16+
if (!this.functions[functionName].name) {
17+
// NOTE the stage is always 'dev'!
18+
this.functions[functionName].name = `${this.service}-dev-${functionName}`;
19+
}
1720
return this.functions[functionName];
1821
};
1922
this.utils = {

0 commit comments

Comments
 (0)