From 2dfe990e089245f92142a54a260e5eb557703311 Mon Sep 17 00:00:00 2001 From: Seth Falco Date: Tue, 29 Jun 2021 18:52:52 +0200 Subject: [PATCH] test: add generic metric helper (#6684) --- services/test-validators.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/services/test-validators.js b/services/test-validators.js index c6804831c2..b6a30c2cb1 100644 --- a/services/test-validators.js +++ b/services/test-validators.js @@ -64,16 +64,24 @@ const isStarRating = withRegex( // Required to be > 0, because accepting zero masks many problems. const isMetric = withRegex(/^([1-9][0-9]*[kMGTPEZY]?|[1-9]\.[1-9][kMGTPEZY])$/) -const isMetricOpenIssues = withRegex( - /^([1-9][0-9]*[kMGTPEZY]?|[1-9]\.[1-9][kMGTPEZY]) open$/ +/** + * @param {RegExp} nestedRegexp Pattern that must appear after the metric. + * @returns {Function} A function that returns a RegExp that matches a metric followed by another pattern. + */ +const isMetricWithPattern = nestedRegexp => { + const pattern = `^([1-9][0-9]*[kMGTPEZY]?|[1-9]\\.[1-9][kMGTPEZY])${nestedRegexp.source}$` + const regexp = new RegExp(pattern) + return withRegex(regexp) +} + +const isMetricOpenIssues = isMetricWithPattern(/ open/) + +const isMetricOverMetric = isMetricWithPattern( + /\/([1-9][0-9]*[kMGTPEZY]?|[1-9]\.[1-9][kMGTPEZY])/ ) -const isMetricOverMetric = withRegex( - /^([1-9][0-9]*[kMGTPEZY]?|[1-9]\.[1-9][kMGTPEZY])\/([1-9][0-9]*[kMGTPEZY]?|[1-9]\.[1-9][kMGTPEZY])$/ -) - -const isMetricOverTimePeriod = withRegex( - /^([1-9][0-9]*[kMGTPEZY]?|[1-9]\.[1-9][kMGTPEZY])\/(year|month|four weeks|quarter|week|day)$/ +const isMetricOverTimePeriod = isMetricWithPattern( + /\/(year|month|four weeks|quarter|week|day)/ ) const isZeroOverTimePeriod = withRegex( @@ -151,6 +159,7 @@ module.exports = { isPhpVersionReduction, isStarRating, isMetric, + isMetricWithPattern, isMetricOpenIssues, isMetricOverMetric, isMetricOverTimePeriod,