[junitxml] add timezone to testsuite timestamp

Signed-off-by: joseph-sentry <joseph.sawaya@sentry.io>
This commit is contained in:
joseph-sentry 2024-06-19 15:06:18 -04:00
parent 2effd8cb2c
commit 80c5e3bdec
No known key found for this signature in database
4 changed files with 10 additions and 4 deletions

View File

@ -212,6 +212,7 @@ Jordan Guymon
Jordan Moldow Jordan Moldow
Jordan Speicher Jordan Speicher
Joseph Hunkeler Joseph Hunkeler
Joseph Sawaya
Josh Karpel Josh Karpel
Joshua Bronson Joshua Bronson
Jurko Gospodnetić Jurko Gospodnetić

View File

@ -0,0 +1 @@
Added timezone information to the testsuite timestamp in the JUnit XML report.

View File

@ -9,6 +9,7 @@ https://github.com/jenkinsci/xunit-plugin/blob/master/src/main/resources/org/jen
""" """
from datetime import datetime from datetime import datetime
from datetime import timezone
import functools import functools
import os import os
import platform import platform
@ -671,7 +672,9 @@ class LogXML:
skipped=str(self.stats["skipped"]), skipped=str(self.stats["skipped"]),
tests=str(numtests), tests=str(numtests),
time=f"{suite_time_delta:.3f}", time=f"{suite_time_delta:.3f}",
timestamp=datetime.fromtimestamp(self.suite_start_time).isoformat(), timestamp=datetime.fromtimestamp(self.suite_start_time, timezone.utc)
.astimezone()
.isoformat(),
hostname=platform.node(), hostname=platform.node(),
) )
global_properties = self._get_global_properties_node() global_properties = self._get_global_properties_node()

View File

@ -1,5 +1,6 @@
# mypy: allow-untyped-defs # mypy: allow-untyped-defs
from datetime import datetime from datetime import datetime
from datetime import timezone
import os import os
from pathlib import Path from pathlib import Path
import platform import platform
@ -220,11 +221,11 @@ class TestPython:
pass pass
""" """
) )
start_time = datetime.now() start_time = datetime.now(timezone.utc)
result, dom = run_and_parse(family=xunit_family) result, dom = run_and_parse(family=xunit_family)
node = dom.find_first_by_tag("testsuite") node = dom.find_first_by_tag("testsuite")
timestamp = datetime.strptime(node["timestamp"], "%Y-%m-%dT%H:%M:%S.%f") timestamp = datetime.strptime(node["timestamp"], "%Y-%m-%dT%H:%M:%S.%f%z")
assert start_time <= timestamp < datetime.now() assert start_time <= timestamp < datetime.now(timezone.utc)
def test_timing_function( def test_timing_function(
self, pytester: Pytester, run_and_parse: RunAndParse, mock_timing self, pytester: Pytester, run_and_parse: RunAndParse, mock_timing