From c12eb22dad889290ba6aaf4fd564a440ceb13503 Mon Sep 17 00:00:00 2001 From: Zabil Cheriya Maliackal Date: Thu, 10 Oct 2024 15:12:46 +0100 Subject: [PATCH] Check number before parsing --- e2e/specs/parameters.spec | 1 + e2e/tests/parameter.ts | 6 ++++++ gauge-ts/src/processors/params/PrimitiveParser.ts | 8 ++++++-- package-lock.json | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/e2e/specs/parameters.spec b/e2e/specs/parameters.spec index 64bf018..a748d97 100644 --- a/e2e/specs/parameters.spec +++ b/e2e/specs/parameters.spec @@ -7,3 +7,4 @@ ## Custom Parameters in steps * This step uses a custom parameter of type Person and value "{\"name\":\"John\",\"age\":30}" +* This step checks if strings with numbers for example "3 % 4" is correct diff --git a/e2e/tests/parameter.ts b/e2e/tests/parameter.ts index 6f32925..4c7f1b2 100644 --- a/e2e/tests/parameter.ts +++ b/e2e/tests/parameter.ts @@ -14,4 +14,10 @@ export default class Parameter { assert.strictEqual(person.age, 30); assert.ok(person.isAdult()); } + @Step( + "This step checks if strings with numbers for example is correct", + ) + async setFilter(value: string) { + assert.strictEqual(value, "3 % 4"); + } } diff --git a/gauge-ts/src/processors/params/PrimitiveParser.ts b/gauge-ts/src/processors/params/PrimitiveParser.ts index 2bd4727..fee797e 100644 --- a/gauge-ts/src/processors/params/PrimitiveParser.ts +++ b/gauge-ts/src/processors/params/PrimitiveParser.ts @@ -27,8 +27,12 @@ export class PrimitiveParser implements ParameterParser { } private convertToNumber(value: string): number | undefined { - const num = Number.parseFloat(value); - return Number.isNaN(num) ? undefined : num; + const trimmedValue = value.trim(); + if (/^-?\d+(\.\d+)?$/.test(trimmedValue)) { + const num = Number.parseFloat(trimmedValue); + return Number.isFinite(num) ? num : undefined; + } + return undefined; } private convertToBoolean(value: string): boolean | undefined { diff --git a/package-lock.json b/package-lock.json index 485f36f..d123285 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ } }, "gauge-ts": { - "version": "0.3.3", + "version": "0.3.4", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.10.9",