Commit 4f1b0af
Changed files (2)
src
test
src/util.ts
@@ -112,14 +112,17 @@ export type Duration = number | `${number}s` | `${number}ms`
export function parseDuration(d: Duration) {
if (typeof d == 'number') {
+ if (isNaN(d) || d < 0) {
+ throw new Error(`Invalid duration: "${d}".`)
+ }
return d
} else if (/\d+s/.test(d)) {
return +d.slice(0, -1) * 1000
} else if (/\d+ms/.test(d)) {
return +d.slice(0, -2)
- } else {
- throw new Error(`Unknown duration: "${d}".`)
}
+
+ throw new Error(`Unknown duration: "${d}".`)
}
export function formatCmd(cmd?: string): string {
test/util.test.js
@@ -56,6 +56,8 @@ test('duration parsing works', () => {
assert.is(parseDuration('2s'), 2000)
assert.is(parseDuration('500ms'), 500)
assert.throws(() => parseDuration('100'))
+ assert.throws(() => parseDuration(NaN))
+ assert.throws(() => parseDuration(-1))
})
test('formatCwd works', () => {