|
1 | 1 | import threading
|
2 | 2 | import re
|
3 | 3 | import sys
|
4 |
| -from datetime import timedelta |
| 4 | +from datetime import timedelta, datetime |
5 | 5 | from unittest import mock
|
6 | 6 |
|
7 | 7 | import pytest
|
|
13 | 13 | Components,
|
14 | 14 | Dsn,
|
15 | 15 | env_to_bool,
|
| 16 | + format_timestamp, |
16 | 17 | get_current_thread_meta,
|
17 | 18 | get_default_release,
|
18 | 19 | get_error_message,
|
@@ -950,3 +951,33 @@ def target():
|
950 | 951 | thread.start()
|
951 | 952 | thread.join()
|
952 | 953 | assert (main_thread.ident, main_thread.name) == results.get(timeout=1)
|
| 954 | + |
| 955 | + |
| 956 | +@pytest.mark.parametrize( |
| 957 | + ("input_timestamp", "expected_output"), |
| 958 | + ( |
| 959 | + ("2021-01-01T12:00:00Z", "2021-01-01T12:00:00.000000Z"), # UTC time |
| 960 | + ( |
| 961 | + "2021-01-01T12:00:00+02:00", |
| 962 | + "2021-01-01T10:00:00.000000Z", |
| 963 | + ), # Non-UTC time |
| 964 | + ( |
| 965 | + "2021-01-01T12:00:00-07:00", |
| 966 | + "2021-01-01T19:00:00.000000Z", |
| 967 | + ), # Another non-UTC time |
| 968 | + ), |
| 969 | +) |
| 970 | +def test_format_timestamp(input_timestamp, expected_output): |
| 971 | + datetime_object = datetime.fromisoformat(input_timestamp) |
| 972 | + formatted = format_timestamp(datetime_object) |
| 973 | + |
| 974 | + assert formatted == expected_output |
| 975 | + |
| 976 | + |
| 977 | +def test_format_timestamp_naive(): |
| 978 | + datetime_object = datetime.fromisoformat("2021-01-01T12:00:00") |
| 979 | + timestamp_regex = r"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{6}Z" |
| 980 | + |
| 981 | + # Ensure that some timestamp is returned, without error. We currently treat these as local time, but this is an |
| 982 | + # implementation detail which we should not assert here. |
| 983 | + assert re.fullmatch(timestamp_regex, format_timestamp(datetime_object)) |
0 commit comments