* gnu/packages/python-xyz.scm (python-robotframework): New variable. * gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch: Add patch. * gnu/local.mk (dist_patch_DATA): Register it.
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 3cc41c05fad5601c0dd1832f64a6e9efca017727 Mon Sep 17 00:00:00 2001
 | 
						|
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
 | 
						|
Date: Mon, 1 Apr 2019 11:36:04 -0400
 | 
						|
Subject: [PATCH] robottime: Honor the SOURCE_DATE_EPOCH environment variable.
 | 
						|
 | 
						|
Honoring the SOURCE_DATE_EPOCH environment variable allows building
 | 
						|
the documentation using libdoc reproducibly, by setting the generated
 | 
						|
timestamp to a fixed value.
 | 
						|
 | 
						|
For more background on reproducible builds and the SOURCE_DATE_EPOCH
 | 
						|
environment variable, see:
 | 
						|
https://reproducible-builds.org/specs/source-date-epoch/.
 | 
						|
 | 
						|
* src/robot/utils/robottime.py: import `os'.
 | 
						|
(TimestampCache._get_epoch): Retrieve date from SOURCE_DATE_EPOCH if
 | 
						|
it is defined, otherwise from time.time().
 | 
						|
* utest/output/test_logger.py (TestLogger.test_write_to_one_logger):
 | 
						|
Check for the existance of a timestamp attribute instead of checking
 | 
						|
for its content as the later is easy to break when using the
 | 
						|
SOURCE_DATE_EPOCH environment variable.
 | 
						|
---
 | 
						|
 src/robot/utils/robottime.py | 3 +++
 | 
						|
 utest/output/test_logger.py  | 2 +-
 | 
						|
 2 files changed, 4 insertions(+), 1 deletion(-)
 | 
						|
 | 
						|
diff --git a/src/robot/utils/robottime.py b/src/robot/utils/robottime.py
 | 
						|
index 06432a4a6..91526f826 100644
 | 
						|
--- a/src/robot/utils/robottime.py
 | 
						|
+++ b/src/robot/utils/robottime.py
 | 
						|
@@ -14,6 +14,7 @@
 | 
						|
 #  limitations under the License.
 | 
						|
 
 | 
						|
 import datetime
 | 
						|
+import os
 | 
						|
 import time
 | 
						|
 import re
 | 
						|
 
 | 
						|
@@ -395,6 +396,8 @@ class TimestampCache(object):
 | 
						|
 
 | 
						|
     # Seam for mocking
 | 
						|
     def _get_epoch(self):
 | 
						|
+        if os.getenv('SOURCE_DATE_EPOCH'):
 | 
						|
+            return float(os.getenv('SOURCE_DATE_EPOCH'))
 | 
						|
         return time.time()
 | 
						|
 
 | 
						|
     def _use_cache(self, secs, *separators):
 | 
						|
diff --git a/utest/output/test_logger.py b/utest/output/test_logger.py
 | 
						|
index 92fe6d77d..e980227aa 100644
 | 
						|
--- a/utest/output/test_logger.py
 | 
						|
+++ b/utest/output/test_logger.py
 | 
						|
@@ -46,7 +46,7 @@ class TestLogger(unittest.TestCase):
 | 
						|
         logger = LoggerMock(('Hello, world!', 'INFO'))
 | 
						|
         self.logger.register_logger(logger)
 | 
						|
         self.logger.write('Hello, world!', 'INFO')
 | 
						|
-        assert_true(logger.msg.timestamp.startswith('20'))
 | 
						|
+        assert_true(hasattr(logger.msg, 'timestamp'))
 | 
						|
 
 | 
						|
     def test_write_to_one_logger_with_trace_level(self):
 | 
						|
         logger = LoggerMock(('expected message', 'TRACE'))
 | 
						|
-- 
 | 
						|
2.20.1
 | 
						|
 |