Commit | Line | Data |
---|---|---|
b9790285 MC |
1 | From 3cc41c05fad5601c0dd1832f64a6e9efca017727 Mon Sep 17 00:00:00 2001 |
2 | From: Maxim Cournoyer <maxim.cournoyer@gmail.com> | |
3 | Date: Mon, 1 Apr 2019 11:36:04 -0400 | |
4 | Subject: [PATCH] robottime: Honor the SOURCE_DATE_EPOCH environment variable. | |
5 | ||
6 | Honoring the SOURCE_DATE_EPOCH environment variable allows building | |
7 | the documentation using libdoc reproducibly, by setting the generated | |
8 | timestamp to a fixed value. | |
9 | ||
10 | For more background on reproducible builds and the SOURCE_DATE_EPOCH | |
11 | environment variable, see: | |
12 | https://reproducible-builds.org/specs/source-date-epoch/. | |
13 | ||
14 | * src/robot/utils/robottime.py: import `os'. | |
15 | (TimestampCache._get_epoch): Retrieve date from SOURCE_DATE_EPOCH if | |
16 | it is defined, otherwise from time.time(). | |
17 | * utest/output/test_logger.py (TestLogger.test_write_to_one_logger): | |
18 | Check for the existance of a timestamp attribute instead of checking | |
19 | for its content as the later is easy to break when using the | |
20 | SOURCE_DATE_EPOCH environment variable. | |
21 | --- | |
22 | src/robot/utils/robottime.py | 3 +++ | |
23 | utest/output/test_logger.py | 2 +- | |
24 | 2 files changed, 4 insertions(+), 1 deletion(-) | |
25 | ||
26 | diff --git a/src/robot/utils/robottime.py b/src/robot/utils/robottime.py | |
27 | index 06432a4a6..91526f826 100644 | |
28 | --- a/src/robot/utils/robottime.py | |
29 | +++ b/src/robot/utils/robottime.py | |
30 | @@ -14,6 +14,7 @@ | |
31 | # limitations under the License. | |
32 | ||
33 | import datetime | |
34 | +import os | |
35 | import time | |
36 | import re | |
37 | ||
38 | @@ -395,6 +396,8 @@ class TimestampCache(object): | |
39 | ||
40 | # Seam for mocking | |
41 | def _get_epoch(self): | |
42 | + if os.getenv('SOURCE_DATE_EPOCH'): | |
43 | + return float(os.getenv('SOURCE_DATE_EPOCH')) | |
44 | return time.time() | |
45 | ||
46 | def _use_cache(self, secs, *separators): | |
47 | diff --git a/utest/output/test_logger.py b/utest/output/test_logger.py | |
48 | index 92fe6d77d..e980227aa 100644 | |
49 | --- a/utest/output/test_logger.py | |
50 | +++ b/utest/output/test_logger.py | |
51 | @@ -46,7 +46,7 @@ class TestLogger(unittest.TestCase): | |
52 | logger = LoggerMock(('Hello, world!', 'INFO')) | |
53 | self.logger.register_logger(logger) | |
54 | self.logger.write('Hello, world!', 'INFO') | |
55 | - assert_true(logger.msg.timestamp.startswith('20')) | |
56 | + assert_true(hasattr(logger.msg, 'timestamp')) | |
57 | ||
58 | def test_write_to_one_logger_with_trace_level(self): | |
59 | logger = LoggerMock(('expected message', 'TRACE')) | |
60 | -- | |
61 | 2.20.1 | |
62 |