1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 21:20:33 +02:00

gnu: python-robotframework: Update to 7.2.2.

* gnu/packages/python-xyz.scm (python-robotframework): Update to 7.2.2.
Use G-expressions.
[source] <patches>: Remove patches after been accepted upstream.
[build-system]: Switch to pyproject.
[arguments] <modules>: Switch to pyproject.
<phases>: Remove 'delete-problematic-tests, as acceptance tests not run.
Remove setting up time zone and do not run acceptance tests in 'check
phase.
[native-inputs]: Remove python-lxml, python-pyyaml, python-xmlschema,
libxml2, libxslt, scrot, tzdata-for-tests, xorg-server-for-tests, and
xvfb-run; add python-setuptools, and python-wheel.

* gnu/packages/patches/python-robotframework-atest.patch: Delete file.
gnu/packages/patches/python-robotframework-source-date-epoch.patch:
Delete File

* gnu/local.mk: Deregister 2 patches.

Change-Id: I0c664da3db8c448c61a61676873842243a97627f
This commit is contained in:
Sharlatan Hellseher
2025-04-22 18:27:47 +01:00
parent 7ad53f737a
commit 39c9f47600
4 changed files with 15 additions and 270 deletions

View File

@@ -2139,8 +2139,6 @@ dist_patch_DATA = \
%D%/packages/patches/python-pytorch-runpath.patch \
%D%/packages/patches/python-pytorch-system-libraries.patch \
%D%/packages/patches/python-pytorch-without-kineto.patch \
%D%/packages/patches/python-robotframework-atest.patch \
%D%/packages/patches/python-robotframework-source-date-epoch.patch \
%D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
%D%/packages/patches/python-unittest2-python3-compat.patch \
%D%/packages/patches/python-unittest2-remove-argparse.patch \

View File

@@ -1,61 +0,0 @@
Patch submitted upstream: https://github.com/robotframework/robotframework/pull/4286.
diff --git a/atest/robot/standard_libraries/operating_system/modified_time.robot b/atest/robot/standard_libraries/operating_system/modified_time.robot
index d144ffd34..c7681e61d 100644
--- a/atest/robot/standard_libraries/operating_system/modified_time.robot
+++ b/atest/robot/standard_libraries/operating_system/modified_time.robot
@@ -8,7 +8,7 @@ ${TESTFILE} %{TEMPDIR}${/}robot-os-tests${/}f1.txt
*** Test Cases ***
Get Modified Time As Timestamp
${tc} = Check Test Case ${TESTNAME}
- Should Match Regexp ${tc.kws[0].msgs[0].message} Last modified time of '<a href=.*</a>' is 20\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d
+ Should Match Regexp ${tc.kws[0].msgs[0].message} Last modified time of '<a href=.*</a>' is \\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d
Get Modified Time As Seconds After Epoch
${tc} = Check Test Case ${TESTNAME}
diff --git a/atest/testdata/standard_libraries/builtin/get_time.robot b/atest/testdata/standard_libraries/builtin/get_time.robot
index 9847d8c42..24ce732ca 100644
--- a/atest/testdata/standard_libraries/builtin/get_time.robot
+++ b/atest/testdata/standard_libraries/builtin/get_time.robot
@@ -11,18 +11,18 @@ Get Time As Timestamp
Get Time As Seconds After Epoch
${time} = Get Time epoch
- Should Be True 1000000000 < ${time} < 2000000000
+ Should Be True 0 < ${time}
Get Time As Parts
@{time} = Get Time year, month, day, hour, min, sec
- Should Be True 2000 < ${time}[0] < 2100
+ Should Match Regexp ${time}[0] \\d{4}
Should Be True 1 <= int('${time}[1]') <= 12
Should Be True 1 <= int('${time}[2]') <= 31
Should Be True 0 <= int('${time}[3]') <= 23
Should Be True 0 <= int('${time}[4]') <= 59
Should Be True 0 <= int('${time}[5]') <= 59
${year} ${min} ${sec} = Get Time seconds and minutes and year and whatnot
- Should Be True 2000 < ${year} < 2100
+ Should Match Regexp ${year} \\d{4}
Should Be True 0 <= int('${min}') <= 59
Should Be True 0 <= int('${sec}') <= 59
diff --git a/atest/testdata/standard_libraries/operating_system/modified_time.robot b/atest/testdata/standard_libraries/operating_system/modified_time.robot
index 9489b3c9c..c712ebaed 100644
--- a/atest/testdata/standard_libraries/operating_system/modified_time.robot
+++ b/atest/testdata/standard_libraries/operating_system/modified_time.robot
@@ -14,13 +14,13 @@ Get Modified Time As Timestamp
Get Modified Time As Seconds After Epoch
${dirtime} = Get Modified Time ${CURDIR} epoch
- Should Be True 1000000000 < ${dirtime} < 2000000000
+ Should Be True ${dirtime} > 0
${current} = Get Time epoch
Should Be True ${current} >= ${dirtime}
Get Modified Time As Parts
${year} = Get Modified Time ${CURDIR} year
- Should Be True 2000 < ${year} < 2100
+ Should Match Regexp ${year} \\d{4}
${yyyy} ${mm} ${dd} = Get Modified Time ${CURDIR} year, month, day
Should Be Equal ${yyyy} ${year}
# Must use `int('x')` because otherwise 08 and 09 are considered octal

View File

@@ -1,165 +0,0 @@
Patch submitted upstream: https://github.com/robotframework/robotframework/pull/4286.
diff --git a/BUILD.rst b/BUILD.rst
index 67902dd09..749c53fde 100644
--- a/BUILD.rst
+++ b/BUILD.rst
@@ -204,6 +204,9 @@ Creating distributions
7. Documentation
+ - For a reproducible build, set the ``SOURCE_DATE_EPOCH``
+ environment variable to 1.
+
- Generate library documentation::
invoke library-docs all
diff --git a/atest/robot/libdoc/html_output.robot b/atest/robot/libdoc/html_output.robot
index f42a4b150..af428c967 100644
--- a/atest/robot/libdoc/html_output.robot
+++ b/atest/robot/libdoc/html_output.robot
@@ -15,7 +15,7 @@ Version
Generated
[Template] Should Match Regexp
- ${MODEL}[generated] \\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}
+ ${MODEL}[generated] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[+-]\\d{2}:\\d{2}
Scope
${MODEL}[scope] GLOBAL
diff --git a/atest/robot/libdoc/json_output.robot b/atest/robot/libdoc/json_output.robot
index 78305a458..654603704 100644
--- a/atest/robot/libdoc/json_output.robot
+++ b/atest/robot/libdoc/json_output.robot
@@ -15,7 +15,7 @@ Version
Generated
[Template] Should Match Regexp
- ${MODEL}[generated] \\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}
+ ${MODEL}[generated] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[+-]\\d{2}:\\d{2}
Scope
${MODEL}[scope] GLOBAL
diff --git a/atest/robot/libdoc/libdoc_resource.robot b/atest/robot/libdoc/libdoc_resource.robot
index bd7c10ecd..b7e06aacc 100644
--- a/atest/robot/libdoc/libdoc_resource.robot
+++ b/atest/robot/libdoc/libdoc_resource.robot
@@ -92,7 +92,8 @@ Lineno Should Be
Element Attribute Should Be ${LIBDOC} lineno ${lineno}
Generated Should Be Defined
- Element Attribute Should Match ${LIBDOC} generated ????-??-??T??:??:??Z
+ # For example, '1970-01-01T00:00:01+00:00'.
+ Element Attribute Should Match ${LIBDOC} generated ????-??-??T??:??:?????:??
Spec version should be correct
Element Attribute Should Be ${LIBDOC} specversion 4
diff --git a/doc/userguide/ug2html.py b/doc/userguide/ug2html.py
index 033203552..b278c71c8 100755
--- a/doc/userguide/ug2html.py
+++ b/doc/userguide/ug2html.py
@@ -150,8 +150,7 @@ def create_userguide():
install_file = _copy_installation_instructions()
description = 'HTML generator for Robot Framework User Guide.'
- arguments = ['--time',
- '--stylesheet-path', ['src/userguide.css'],
+ arguments = ['--stylesheet-path', ['src/userguide.css'],
'src/RobotFrameworkUserGuide.rst',
'RobotFrameworkUserGuide.html']
os.chdir(CURDIR)
diff --git a/src/robot/libdocpkg/model.py b/src/robot/libdocpkg/model.py
index 5f44039ef..c36bf4a49 100644
--- a/src/robot/libdocpkg/model.py
+++ b/src/robot/libdocpkg/model.py
@@ -19,7 +19,7 @@ from itertools import chain
from robot.model import Tags
from robot.running import ArgumentSpec
-from robot.utils import getshortdoc, get_timestamp, Sortable, setter
+from robot.utils import get_timestamp_for_doc, getshortdoc, Sortable, setter
from .htmlutils import DocFormatter, DocToHtml, HtmlToText
from .writer import LibdocWriter
@@ -113,7 +113,7 @@ class LibraryDoc:
'name': self.name,
'doc': self.doc,
'version': self.version,
- 'generated': get_timestamp(daysep='-', millissep=None),
+ 'generated': get_timestamp_for_doc(),
'type': self.type,
'scope': self.scope,
'docFormat': self.doc_format,
diff --git a/src/robot/libdocpkg/xmlwriter.py b/src/robot/libdocpkg/xmlwriter.py
index a765ebb2b..980debebb 100644
--- a/src/robot/libdocpkg/xmlwriter.py
+++ b/src/robot/libdocpkg/xmlwriter.py
@@ -13,9 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from datetime import datetime
-
-from robot.utils import XmlWriter
+from robot.utils import XmlWriter, get_timestamp_for_doc
class LibdocXmlWriter:
@@ -32,12 +30,11 @@ class LibdocXmlWriter:
self._write_end(writer)
def _write_start(self, libdoc, writer):
- generated = datetime.utcnow().replace(microsecond=0).isoformat() + 'Z'
attrs = {'name': libdoc.name,
'type': libdoc.type,
'format': libdoc.doc_format,
'scope': libdoc.scope,
- 'generated': generated,
+ 'generated': get_timestamp_for_doc(),
'specversion': '4'}
self._add_source_info(attrs, libdoc)
writer.start('keywordspec', attrs)
diff --git a/src/robot/utils/__init__.py b/src/robot/utils/__init__.py
index 442ffa4f3..80793ec29 100644
--- a/src/robot/utils/__init__.py
+++ b/src/robot/utils/__init__.py
@@ -58,9 +58,9 @@ from .robotinspect import is_init
from .robotio import binary_file_writer, create_destination_directory, file_writer
from .robotpath import abspath, find_file, get_link_path, normpath
from .robottime import (elapsed_time_to_string, format_time, get_elapsed_time,
- get_time, get_timestamp, secs_to_timestamp,
- secs_to_timestr, timestamp_to_secs, timestr_to_secs,
- parse_time)
+ get_time, get_timestamp, get_timestamp_for_doc,
+ secs_to_timestamp, secs_to_timestr, timestamp_to_secs,
+ timestr_to_secs, parse_time)
from .robottypes import (FALSE_STRINGS, TRUE_STRINGS, is_bytes, is_dict_like, is_falsy,
is_integer, is_list_like, is_number, is_pathlike, is_string,
is_truthy, is_union, type_name, type_repr, typeddict_types)
diff --git a/src/robot/utils/robottime.py b/src/robot/utils/robottime.py
index 97a7d1af0..4a0ba2d83 100644
--- a/src/robot/utils/robottime.py
+++ b/src/robot/utils/robottime.py
@@ -13,6 +13,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+import datetime
+import os
import re
import time
@@ -316,6 +318,13 @@ def get_timestamp(daysep='', daytimesep=' ', timesep=':', millissep='.'):
return TIMESTAMP_CACHE.get_timestamp(daysep, daytimesep, timesep, millissep)
+def get_timestamp_for_doc():
+ """Return a timestamp that honors `SOURCE_DATE_EPOCH`."""
+ ts = float(os.getenv('SOURCE_DATE_EPOCH', time.time()))
+ dt = datetime.datetime.fromtimestamp(round(ts), datetime.timezone.utc)
+ return dt.isoformat()
+
+
def timestamp_to_secs(timestamp, seps=None):
try:
secs = _timestamp_to_millis(timestamp, seps) / 1000.0

View File

@@ -8501,41 +8501,30 @@ ecosystem, but can naturally be used also by other projects.")
(define-public python-robotframework
(package
(name "python-robotframework")
(version "5.0.1")
;; There are no tests in the PyPI archive.
(version "7.2.2")
(source
(origin
(method git-fetch)
(method git-fetch) ; no tests in the PyPI archive
(uri (git-reference
(url "https://github.com/robotframework/robotframework")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0jjr71npzrm5mv16pya3m2dqaqgf6sc45yca5kfmc5lfislig5b8"))
(patches (search-patches
"python-robotframework-atest.patch"
"python-robotframework-source-date-epoch.patch"))))
(build-system python-build-system)
(base32 "1a34dv5gpaiqbddblfnirp1ja2a1069n9nifasn4g26kcj69fpra"))))
(outputs '("out" "doc"))
(build-system pyproject-build-system)
(arguments
(list
#:modules '((guix build python-build-system)
#:modules '((guix build pyproject-build-system)
(guix build utils)
(ice-9 ftw)
(ice-9 match)
(srfi srfi-26))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'delete-problematic-tests
(lambda _
;; Tests such as 'Tilde and username in path' rely on HOME and
;; USER being set, on top of the user's /etc/passwd home
;; directory not being '/', as is the case in the Guix build
;; container.
(delete-file "atest/robot/standard_libraries/\
operating_system/path_expansion.robot")))
(add-before 'build 'build-and-install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let ((doc (string-append (assoc-ref outputs "doc")
(let ((doc (string-append #$output:doc
"/share/doc/robotframework")))
(invoke "invoke" "library-docs" "all")
(invoke "doc/userguide/ug2html.py" "dist") ;user guide
@@ -8548,38 +8537,22 @@ operating_system/path_expansion.robot")))
(_ (error "could not find the user guide directory"))))
(copy-recursively user-guide-dir doc)))))
(replace 'check
(lambda* (#:key native-inputs inputs tests?
#:allow-other-keys)
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; Some tests require timezone data. Otherwise, they
;; look up /etc/localtime, which doesn't exist, and
;; fail with:
;;
;; OverflowError: mktime argument out of range
(setenv "TZDIR"
(search-input-directory
(or native-inputs inputs) "share/zoneinfo"))
(setenv "TZ" "Europe/Paris")
;; TODO: Some acceptance faile and took near 30min to
;; complete: 6765 tests, 6745 passed, 20 failed; findout how
;; to skip failing ones.
(format #t "Running unit tests...~%")
(invoke "utest/run.py")
(format #t "Running acceptance tests...~%")
(invoke "xvfb-run" "atest/run.py")))))))
(invoke "utest/run.py")))))))
(native-inputs
(list python-docutils
python-jsonschema
python-invoke
python-lxml
python-jsonschema
python-pygments
python-pyyaml
python-rellu
python-setuptools
`(,python "tk") ;used when building the HTML doc
python-xmlschema
scrot ;for taking screenshots
tzdata-for-tests
xvfb-run))
(outputs '("out" "doc"))
python-wheel))
(home-page "https://robotframework.org")
(synopsis "Generic automation framework")
(description "Robot Framework is a generic automation framework for