From c65003f41276ea33fe3a3a5d53df8b340462e8fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?v=C3=ADn=CE=B1=D1=87=20pupp=CE=B1l?= <8843216+vinaypuppal@users.noreply.github.com> Date: Fri, 29 Sep 2023 13:12:07 +0530 Subject: [PATCH] Fix filename regex escaping (#270) --- src/coverage.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/coverage.ts b/src/coverage.ts index b47f31a..2629835 100644 --- a/src/coverage.ts +++ b/src/coverage.ts @@ -36,6 +36,10 @@ export function parseCoverageReport(report: string, files: CommitsComparison): F return {averageCover: avgCover, newCover, modifiedCover} } +function escapeRegExp(value: string) { + return value.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); +} + export function parseFilesCoverage( report: string, source: string, @@ -43,7 +47,7 @@ export function parseFilesCoverage( threshold: number ): Coverage[] | undefined { const coverages = files?.map(file => { - const fileName = file.replace(`${source}/`, '').replace(/\//g, '\\/') + const fileName = escapeRegExp(file.replace(`${source}/`, '')) const regex = new RegExp(`.*filename="${fileName}".*line-rate="(?[0-9]+[.]*[0-9]*)".*`) const match = report.match(regex) const cover = match?.groups ? parseFloat(match.groups['cover']) : -1