mirror of
https://github.com/dorny/test-reporter.git
synced 2026-02-02 19:25:22 -08:00
remove auto conversion of XML attributes based on value
This commit is contained in:
20
src/utils/parse-utils.ts
Normal file
20
src/utils/parse-utils.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
export function parseNetDuration(str: string): number {
|
||||
// matches dotnet duration: 00:00:00.0010000
|
||||
const durationRe = /^(\d\d):(\d\d):(\d\d\.\d+)$/
|
||||
const durationMatch = str.match(durationRe)
|
||||
if (durationMatch === null) {
|
||||
throw new Error(`Invalid format: "${str}" is not NET duration`)
|
||||
}
|
||||
|
||||
const [_, hourStr, minStr, secStr] = durationMatch
|
||||
return (parseInt(hourStr) * 3600 + parseInt(minStr) * 60 + parseFloat(secStr)) * 1000
|
||||
}
|
||||
|
||||
export function parseIsoDate(str: string): Date {
|
||||
const isoDateRe = /^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)$/
|
||||
if (str === undefined || !isoDateRe.test(str)) {
|
||||
throw new Error(`Invalid format: "${str}" is not ISO date`)
|
||||
}
|
||||
|
||||
return new Date(str)
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
const isoDateRe = /^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)$/
|
||||
|
||||
// matches dotnet duration: 00:00:00.0010000
|
||||
const durationRe = /^(\d\d):(\d\d):(\d\d\.\d+)$/
|
||||
|
||||
export function parseAttribute(str: string | undefined): string | Date | number | undefined {
|
||||
if (str === '' || str === undefined) {
|
||||
return str
|
||||
}
|
||||
|
||||
if (isoDateRe.test(str)) {
|
||||
return new Date(str)
|
||||
}
|
||||
|
||||
const durationMatch = str.match(durationRe)
|
||||
if (durationMatch !== null) {
|
||||
const [_, hourStr, minStr, secStr] = durationMatch
|
||||
return (parseInt(hourStr) * 3600 + parseInt(minStr) * 60 + parseFloat(secStr)) * 1000
|
||||
}
|
||||
|
||||
const num = parseFloat(str)
|
||||
if (isNaN(num)) {
|
||||
return str
|
||||
}
|
||||
|
||||
return num
|
||||
}
|
||||
Reference in New Issue
Block a user