gnu: Add python-robotframework.

* 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.
This commit is contained in:
Maxim Cournoyer 2019-04-01 22:39:45 -04:00
parent c0c0bb3823
commit b979028527
No known key found for this signature in database
GPG key ID: 1260E46482E63562
3 changed files with 108 additions and 0 deletions

View file

@ -1206,6 +1206,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-pycrypto-CVE-2013-7459.patch \ %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch \
%D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
%D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \ %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \
%D%/packages/patches/python-robotframework-honor-source-date-epoch.patch \
%D%/packages/patches/python2-subprocess32-disable-input-test.patch \ %D%/packages/patches/python2-subprocess32-disable-input-test.patch \
%D%/packages/patches/python-unittest2-python3-compat.patch \ %D%/packages/patches/python-unittest2-python3-compat.patch \
%D%/packages/patches/python-unittest2-remove-argparse.patch \ %D%/packages/patches/python-unittest2-remove-argparse.patch \

View file

@ -0,0 +1,62 @@
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

View file

@ -2752,6 +2752,51 @@ (define-public python-rellu
ecosystem, but can naturally be used also by other projects.") ecosystem, but can naturally be used also by other projects.")
(license license:asl2.0))) (license license:asl2.0)))
(define-public python-robotframework
(package
(name "python-robotframework")
(version "3.1.1")
;; There are no tests in the PyPI archive.
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/robotframework/robotframework.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1aaiamc9l35m5sf7xl2qc5q9308v7sz3p1qgzcslsjxzddphyn4v"))
(patches (search-patches
"python-robotframework-honor-source-date-epoch.patch"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-before 'build 'build-and-install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((doc-output (assoc-ref outputs "doc"))
(doc (string-append doc-output "/share/"
,name "-" ,version "/")))
(invoke "invoke" "library-docs" "all")
(mkdir-p doc)
(copy-recursively "doc/libraries"
(string-append doc "/libraries"))
#t)))
(replace 'check
(lambda _
(invoke "python" "utest/run.py"))))))
(native-inputs
`(("python-invoke" ,python-invoke)
("python-rellu" ,python-rellu)
("python:tk" ,python "tk"))) ;used when building the HTML doc
(outputs '("out" "doc"))
(home-page "https://robotframework.org")
(synopsis "Generic automation framework")
(description "Robot Framework is a generic automation framework for
acceptance testing, acceptance test driven development (ATDD), and robotic
process automation (RPA).")
(license license:asl2.0)))
(define-public python-scp (define-public python-scp
(package (package
(name "python-scp") (name "python-scp")