summaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-03-24 14:46:37 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-03-24 15:43:04 -0400
commitd8f62653e5810beceff79b8fe655715734a8dcee (patch)
tree9f1b92a9469400291721b3870f96a4c9525a5f69 /gnu/packages/patches
parentd1851d7880603237f04a6f476d89692e9d10ede3 (diff)
gnu: python-robotframework: Update to 5.0 and run acceptance tests.
* gnu/packages/python-xyz.scm (python-robotframework): Update to 5.0. [patches]: Remove python-robotframework-ug2html.patch. Add python-robotframework-atest.patch and update python-robotframework-source-date-epoch.patch. [phases]: Use gexps. {delete-problematic-tests}: New phase. {check}: Also run `atest', the acceptance test suite. [native-inputs]: Use new style. Add python-lxml, python-pyyaml, python-xmlschema, scrot and xvfb-run. * gnu/packages/patches/python-robotframework-atest.patch: New file. * gnu/packages/patches/python-robotframework-source-date-epoch.patch: Update patch. * gnu/packages/patches/python-robotframework-ug2html.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly.
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/python-robotframework-atest.patch61
-rw-r--r--gnu/packages/patches/python-robotframework-source-date-epoch.patch153
-rw-r--r--gnu/packages/patches/python-robotframework-ug2html.patch57
3 files changed, 188 insertions, 83 deletions
diff --git a/gnu/packages/patches/python-robotframework-atest.patch b/gnu/packages/patches/python-robotframework-atest.patch
new file mode 100644
index 0000000000..619ed61b65
--- /dev/null
+++ b/gnu/packages/patches/python-robotframework-atest.patch
@@ -0,0 +1,61 @@
+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
diff --git a/gnu/packages/patches/python-robotframework-source-date-epoch.patch b/gnu/packages/patches/python-robotframework-source-date-epoch.patch
index 11424bf4db..7f00d82061 100644
--- a/gnu/packages/patches/python-robotframework-source-date-epoch.patch
+++ b/gnu/packages/patches/python-robotframework-source-date-epoch.patch
@@ -1,12 +1,64 @@
-Do not embed any timestamp in the built documentation.
-
-Upstream issue: https://github.com/robotframework/robotframework/issues/4262.
+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 43cdb31bd..550e74a79 100755
+index 033203552..b278c71c8 100755
--- a/doc/userguide/ug2html.py
+++ b/doc/userguide/ug2html.py
-@@ -158,8 +158,7 @@ def create_userguide():
+@@ -150,8 +150,7 @@ def create_userguide():
install_file = _copy_installation_instructions()
description = 'HTML generator for Robot Framework User Guide.'
@@ -17,48 +69,97 @@ index 43cdb31bd..550e74a79 100755
'RobotFrameworkUserGuide.html']
os.chdir(CURDIR)
diff --git a/src/robot/libdocpkg/model.py b/src/robot/libdocpkg/model.py
-index 4d9ffd70b..5c276d1d6 100644
+index 5f44039ef..c36bf4a49 100644
--- a/src/robot/libdocpkg/model.py
+++ b/src/robot/libdocpkg/model.py
-@@ -14,6 +14,7 @@
- # limitations under the License.
+@@ -19,7 +19,7 @@ from itertools import chain
- import json
-+import os
- import re
- 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
-@@ -113,7 +114,8 @@ class LibraryDoc(object):
+ 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': ('' if os.environ['SOURCE_DATE_EPOCH']
-+ else 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 3882e1219..4a84fb42e 100644
+index a765ebb2b..980debebb 100644
--- a/src/robot/libdocpkg/xmlwriter.py
+++ b/src/robot/libdocpkg/xmlwriter.py
-@@ -14,6 +14,8 @@
+@@ -13,9 +13,7 @@
+ # See the License for the specific language governing permissions and
# limitations under the License.
- import os.path
-+import os
-+
- from datetime import datetime
+-from datetime import datetime
+-
+-from robot.utils import XmlWriter
++from robot.utils import XmlWriter, get_timestamp_for_doc
+
- from robot.utils import WINDOWS, XmlWriter, unicode
-@@ -30,7 +32,9 @@ class LibdocXmlWriter(object):
+ 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'
-+ generated = (
-+ '' if os.environ['SOURCE_DATE_EPOCH']
-+ else 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
diff --git a/gnu/packages/patches/python-robotframework-ug2html.patch b/gnu/packages/patches/python-robotframework-ug2html.patch
deleted file mode 100644
index eea88e01f3..0000000000
--- a/gnu/packages/patches/python-robotframework-ug2html.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Do not require the obsolete robotframeworklexer.
-
-Submitted upstream at: https://github.com/robotframework/robotframework/pull/4265.
-diff --git a/doc/userguide/ug2html.py b/doc/userguide/ug2html.py
-index 43cdb31bd..033203552 100755
---- a/doc/userguide/ug2html.py
-+++ b/doc/userguide/ug2html.py
-@@ -93,34 +93,26 @@ from docutils.parsers.rst import directives
- from pygments import highlight, __version__ as pygments_version
- from pygments.lexers import get_lexer_by_name
-
--# Use latest version, not version bundled with Pygments
--import robotframeworklexer
--
-
- def too_old(version_string, minimum):
- version = tuple(int(v) for v in version_string.split('.')[:2])
- return version < minimum
-
-
--if too_old(getattr(robotframeworklexer, '__version__', '1.0'), (1, 1)):
-- sys.exit('robotframeworklexer >= 1.1 is required.')
--if too_old(pygments_version, (2, 1)):
-- sys.exit('Pygments >= 2.1 is required.')
-+if too_old(pygments_version, (2, 8)):
-+ sys.exit('Pygments >= 2.8 is required.')
-
-
- def pygments_directive(name, arguments, options, content, lineno,
- content_offset, block_text, state, state_machine):
- try:
-- if arguments[0] == 'robotframework':
-- lexer = robotframeworklexer.RobotFrameworkLexer()
-- else:
-- lexer = get_lexer_by_name(arguments[0])
-+ lexer = get_lexer_by_name(arguments[0])
- except ValueError as err:
- raise ValueError(f'Invalid syntax highlighting language "{arguments[0]}".')
- # take an arbitrary option if more than one is given
- formatter = options and VARIANTS[options.keys()[0]] or DEFAULT
- # possibility to read the content from an external file
-- filtered = [ line for line in content if line.strip() ]
-+ filtered = [line for line in content if line.strip()]
- if len(filtered) == 1:
- path = filtered[0].replace('/', os.sep)
- if os.path.isfile(path):
-diff --git a/requirements-build.txt b/requirements-build.txt
-index e0f5e19a2..a2fcdcfd5 100644
---- a/requirements-build.txt
-+++ b/requirements-build.txt
-@@ -5,5 +5,4 @@ rellu >= 0.7
- twine >= 1.12
- wheel
- docutils
--pygments >= 2.1
--robotframeworklexer >= 1.1
-+pygments >= 2.8