Skip to content

Commit 6d09389

Browse files
committed
grpc-js: Fix duration parsing bug
1 parent d95ea30 commit 6d09389

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

packages/grpc-js/src/duration.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ export function parseDuration(value: string): Duration | null {
4343
}
4444
return {
4545
seconds: Number.parseInt(match[1], 10),
46-
nanos: Number.parseInt(match[2].padEnd(9, '0'), 10)
46+
nanos: match[2] ? Number.parseInt(match[2].padEnd(9, '0'), 10) : 0
4747
};
4848
}
+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
* Copyright 2024 gRPC authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
import * as assert from 'assert';
19+
import * as duration from '../src/duration';
20+
21+
describe('Duration', () => {
22+
describe('parseDuration', () => {
23+
const expectationList: {
24+
input: string,
25+
result: duration.Duration | null
26+
}[] = [
27+
{
28+
input: '1.0s',
29+
result: { seconds: 1, nanos: 0 }
30+
},
31+
{
32+
input: '1.5s',
33+
result: { seconds: 1, nanos: 500_000_000 }
34+
},
35+
{
36+
input: '1s',
37+
result: { seconds: 1, nanos: 0 }
38+
},
39+
{
40+
input: '1',
41+
result: null
42+
}
43+
];
44+
for (const {input, result} of expectationList) {
45+
it(`${input} -> ${JSON.stringify(result)}`, () => {
46+
assert.deepStrictEqual(duration.parseDuration(input), result);
47+
});
48+
}
49+
});
50+
});

0 commit comments

Comments
 (0)