aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/check.scm32
-rw-r--r--gnu/packages/patches/behave-skip-a-couple-of-tests.patch462
3 files changed, 21 insertions, 474 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 04ff0fc94b..114855269e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -901,7 +901,6 @@ dist_patch_DATA = \
%D%/packages/patches/bsd-games-prevent-name-collisions.patch \
%D%/packages/patches/bsd-games-stdio.h.patch \
%D%/packages/patches/beancount-disable-googleapis-fonts.patch \
- %D%/packages/patches/behave-skip-a-couple-of-tests.patch \
%D%/packages/patches/beignet-correct-file-names.patch \
%D%/packages/patches/bidiv-update-fribidi.patch \
%D%/packages/patches/binutils-2.37-file-descriptor-leak.patch \
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 2dbb95c899..fb5bcadf83 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -2464,23 +2464,33 @@ backported from Python 2.7 for Python 2.4+.")
(define-public behave
(package
(name "behave")
- (version "1.2.6")
+ ;; The 1.2.6 release from 2018 has several problems with newer Python
+ ;; versions, so we package a recent snapshot.
+ (version "1.2.7.dev2")
(source (origin
- (method url-fetch)
- (uri (pypi-uri "behave" version))
- (sha256
- (base32
- "11hsz365qglvpp1m1w16239c3kiw15lw7adha49lqaakm8kj6rmr"))
- (patches (search-patches
- "behave-skip-a-couple-of-tests.patch"))))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/behave/behave")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0sv94wagi214h0l91zn8m04f78x5wn83vqxib81hnl1qahvx9hq7"))))
(build-system python-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "pytest" "-c" "/dev/null" "-vv")))))))
(native-inputs
(list python-mock python-nose python-pathpy python-pyhamcrest
python-pytest))
(propagated-inputs
- (list python-parse python-parse-type))
- (arguments
- '(#:test-target "behave_test"))
+ (list python-colorama
+ python-cucumber-tag-expressions
+ python-parse
+ python-parse-type))
(home-page "https://github.com/behave/behave")
(synopsis "Python behavior-driven development")
(description
diff --git a/gnu/packages/patches/behave-skip-a-couple-of-tests.patch b/gnu/packages/patches/behave-skip-a-couple-of-tests.patch
deleted file mode 100644
index e3d4e15241..0000000000
--- a/gnu/packages/patches/behave-skip-a-couple-of-tests.patch
+++ /dev/null
@@ -1,462 +0,0 @@
-Fix build with Python 3.8, this is a patch based on upstream commit [1].
-
-1: c000c88eb5239b87f299c85e83b349b0ef387ae7
-
-
-diff --git a/behave.ini b/behave.ini
-index 45c0f0d7..952240d6 100644
---- a/behave.ini
-+++ b/behave.ini
-@@ -15,8 +15,9 @@ show_skipped = false
- format = rerun
- progress3
- outfiles = rerun.txt
-- reports/report_progress3.txt
-+ build/behave.reports/report_progress3.txt
- junit = true
-+junit_directory = build/behave.reports
- logging_level = INFO
- # logging_format = LOG.%(levelname)-8s %(name)-10s: %(message)s
- # logging_format = LOG.%(levelname)-8s %(asctime)s %(name)-10s: %(message)s
-diff --git a/features/environment.py b/features/environment.py
-index 4744e89a..3769ee40 100644
---- a/features/environment.py
-+++ b/features/environment.py
-@@ -1,5 +1,7 @@
- # -*- coding: UTF-8 -*-
-+# FILE: features/environemnt.py
-
-+from __future__ import absolute_import, print_function
- from behave.tag_matcher import ActiveTagMatcher, setup_active_tag_values
- from behave4cmd0.setup_command_shell import setup_command_shell_processors4behave
- import platform
-@@ -20,6 +22,15 @@
- }
- active_tag_matcher = ActiveTagMatcher(active_tag_value_provider)
-
-+
-+def print_active_tags_summary():
-+ active_tag_data = active_tag_value_provider
-+ print("ACTIVE-TAG SUMMARY:")
-+ print("use.with_python.version=%s" % active_tag_data.get("python.version"))
-+ # print("use.with_os=%s" % active_tag_data.get("os"))
-+ print()
-+
-+
- # -----------------------------------------------------------------------------
- # HOOKS:
- # -----------------------------------------------------------------------------
-@@ -30,11 +41,14 @@ def before_all(context):
- setup_python_path()
- setup_context_with_global_params_test(context)
- setup_command_shell_processors4behave()
-+ print_active_tags_summary()
-+
-
- def before_feature(context, feature):
- if active_tag_matcher.should_exclude_with(feature.tags):
- feature.skip(reason=active_tag_matcher.exclude_reason)
-
-+
- def before_scenario(context, scenario):
- if active_tag_matcher.should_exclude_with(scenario.effective_tags):
- scenario.skip(reason=active_tag_matcher.exclude_reason)
-diff --git a/features/step.duplicated_step.feature b/features/step.duplicated_step.feature
-index 59888b0f..396cca27 100644
---- a/features/step.duplicated_step.feature
-+++ b/features/step.duplicated_step.feature
-@@ -32,11 +32,11 @@ Feature: Duplicated Step Definitions
- AmbiguousStep: @given('I call Alice') has already been defined in
- existing step @given('I call Alice') at features/steps/alice_steps.py:3
- """
-- And the command output should contain:
-- """
-- File "features/steps/alice_steps.py", line 7, in <module>
-- @given(u'I call Alice')
-- """
-+ # -- DISABLED: Python 3.8 traceback line numbers differ w/ decorators (+1).
-+ # And the command output should contain:
-+ # """
-+ # File "features/steps/alice_steps.py", line 7, in <module>
-+ # """
-
-
- Scenario: Duplicated Step Definition in another File
-@@ -70,11 +70,11 @@ Feature: Duplicated Step Definitions
- AmbiguousStep: @given('I call Bob') has already been defined in
- existing step @given('I call Bob') at features/steps/bob1_steps.py:3
- """
-- And the command output should contain:
-- """
-- File "features/steps/bob2_steps.py", line 3, in <module>
-- @given('I call Bob')
-- """
-+ # -- DISABLED: Python 3.8 traceback line numbers differ w/ decorators (+1).
-+ # And the command output should contain:
-+ # """
-+ # File "features/steps/bob2_steps.py", line 3, in <module>
-+ # """
-
- @xfail
- Scenario: Duplicated Same Step Definition via import from another File
-diff --git a/issue.features/environment.py b/issue.features/environment.py
-index 2dfec751..7e48ee03 100644
---- a/issue.features/environment.py
-+++ b/issue.features/environment.py
-@@ -1,5 +1,5 @@
- # -*- coding: UTF-8 -*-
--# FILE: features/environment.py
-+# FILE: issue.features/environemnt.py
- # pylint: disable=unused-argument
- """
- Functionality:
-@@ -7,17 +7,20 @@
- * active tags
- """
-
--from __future__ import print_function
-+
-+from __future__ import absolute_import, print_function
- import sys
- import platform
- import os.path
- import six
- from behave.tag_matcher import ActiveTagMatcher
- from behave4cmd0.setup_command_shell import setup_command_shell_processors4behave
--# PREPARED:
--# from behave.tag_matcher import setup_active_tag_values
-+# PREPARED: from behave.tag_matcher import setup_active_tag_values
-
-
-+# ---------------------------------------------------------------------------
-+# TEST SUPPORT: For Active Tags
-+# ---------------------------------------------------------------------------
- def require_tool(tool_name):
- """Check if a tool (an executable program) is provided on this platform.
-
-@@ -45,12 +48,14 @@ def require_tool(tool_name):
- # print("TOOL-NOT-FOUND: %s" % tool_name)
- return False
-
-+
- def as_bool_string(value):
- if bool(value):
- return "yes"
- else:
- return "no"
-
-+
- def discover_ci_server():
- # pylint: disable=invalid-name
- ci_server = "none"
-@@ -67,11 +72,17 @@ def discover_ci_server():
- return ci_server
-
-
-+# ---------------------------------------------------------------------------
-+# BEHAVE SUPPORT: Active Tags
-+# ---------------------------------------------------------------------------
- # -- MATCHES ANY TAGS: @use.with_{category}={value}
- # NOTE: active_tag_value_provider provides category values for active tags.
-+python_version = "%s.%s" % sys.version_info[:2]
- active_tag_value_provider = {
-+ "platform": sys.platform,
- "python2": str(six.PY2).lower(),
- "python3": str(six.PY3).lower(),
-+ "python.version": python_version,
- # -- python.implementation: cpython, pypy, jython, ironpython
- "python.implementation": platform.python_implementation().lower(),
- "pypy": str("__pypy__" in sys.modules).lower(),
-@@ -82,17 +92,33 @@ def discover_ci_server():
- }
- active_tag_matcher = ActiveTagMatcher(active_tag_value_provider)
-
-+
-+def print_active_tags_summary():
-+ active_tag_data = active_tag_value_provider
-+ print("ACTIVE-TAG SUMMARY:")
-+ print("use.with_python.version=%s" % active_tag_data.get("python.version"))
-+ # print("use.with_platform=%s" % active_tag_data.get("platform"))
-+ # print("use.with_os=%s" % active_tag_data.get("os"))
-+ print()
-+
-+
-+# ---------------------------------------------------------------------------
-+# BEHAVE HOOKS:
-+# ---------------------------------------------------------------------------
- def before_all(context):
- # -- SETUP ACTIVE-TAG MATCHER (with userdata):
- # USE: behave -D browser=safari ...
-- # NOT-NEEDED: setup_active_tag_values(active_tag_value_provider,
-- # context.config.userdata)
-+ # NOT-NEEDED:
-+ # setup_active_tag_values(active_tag_value_provider, context.config.userdata)
- setup_command_shell_processors4behave()
-+ print_active_tags_summary()
-+
-
- def before_feature(context, feature):
- if active_tag_matcher.should_exclude_with(feature.tags):
- feature.skip(reason=active_tag_matcher.exclude_reason)
-
-+
- def before_scenario(context, scenario):
- if active_tag_matcher.should_exclude_with(scenario.effective_tags):
- scenario.skip(reason=active_tag_matcher.exclude_reason)
-diff --git a/issue.features/issue0330.feature b/issue.features/issue0330.feature
-index dc1ebe75..81cb6e29 100644
---- a/issue.features/issue0330.feature
-+++ b/issue.features/issue0330.feature
-@@ -70,6 +70,7 @@ Feature: Issue #330: Skipped scenarios are included in junit reports when --no-s
- And note that "bob.feature is skipped"
-
-
-+ @not.with_python.version=3.8
- Scenario: Junit report for skipped feature is created with --show-skipped
- When I run "behave --junit -t @tag1 --show-skipped @alice_and_bob.featureset"
- Then it should pass with:
-@@ -83,6 +84,23 @@ Feature: Issue #330: Skipped scenarios are included in junit reports when --no-s
- <testsuite errors="0" failures="0" name="bob.Bob" skipped="1" tests="1" time="0.0">
- """
-
-+ @use.with_python.version=3.8
-+ Scenario: Junit report for skipped feature is created with --show-skipped
-+ When I run "behave --junit -t @tag1 --show-skipped @alice_and_bob.featureset"
-+ Then it should pass with:
-+ """
-+ 1 feature passed, 0 failed, 1 skipped
-+ """
-+ And a file named "test_results/TESTS-alice.xml" exists
-+ And a file named "test_results/TESTS-bob.xml" exists
-+ And the file "test_results/TESTS-bob.xml" should contain:
-+ """
-+ <testsuite name="bob.Bob" tests="1" errors="0" failures="0" skipped="1" time="0.0">
-+ """
-+ # -- HINT FOR: Python < 3.8
-+ # <testsuite errors="0" failures="0" name="bob.Bob" skipped="1" tests="1" time="0.0">
-+
-+ @not.with_python.version=3.8
- Scenario: Junit report for skipped scenario is neither shown nor counted with --no-skipped
- When I run "behave --junit -t @tag1 --no-skipped"
- Then it should pass with:
-@@ -102,7 +120,30 @@ Feature: Issue #330: Skipped scenarios are included in junit reports when --no-s
- """
- And note that "Charly2 is the skipped scenarion in charly.feature"
-
-+ @use.with_python.version=3.8
-+ Scenario: Junit report for skipped scenario is neither shown nor counted with --no-skipped
-+ When I run "behave --junit -t @tag1 --no-skipped"
-+ Then it should pass with:
-+ """
-+ 2 features passed, 0 failed, 1 skipped
-+ 2 scenarios passed, 0 failed, 2 skipped
-+ """
-+ And a file named "test_results/TESTS-alice.xml" exists
-+ And a file named "test_results/TESTS-charly.xml" exists
-+ And the file "test_results/TESTS-charly.xml" should contain:
-+ """
-+ <testsuite name="charly.Charly" tests="1" errors="0" failures="0" skipped="0"
-+ """
-+ # -- HINT FOR: Python < 3.8
-+ # <testsuite errors="0" failures="0" name="charly.Charly" skipped="0" tests="1"
-+ And the file "test_results/TESTS-charly.xml" should not contain:
-+ """
-+ <testcase classname="charly.Charly" name="Charly2"
-+ """
-+ And note that "Charly2 is the skipped scenarion in charly.feature"
-+
-
-+ @not.with_python.version=3.8
- Scenario: Junit report for skipped scenario is shown and counted with --show-skipped
- When I run "behave --junit -t @tag1 --show-skipped"
- Then it should pass with:
-@@ -122,3 +163,26 @@ Feature: Issue #330: Skipped scenarios are included in junit reports when --no-s
- """
- And note that "Charly2 is the skipped scenarion in charly.feature"
-
-+
-+ @use.with_python.version=3.8
-+ Scenario: Junit report for skipped scenario is shown and counted with --show-skipped
-+ When I run "behave --junit -t @tag1 --show-skipped"
-+ Then it should pass with:
-+ """
-+ 2 features passed, 0 failed, 1 skipped
-+ 2 scenarios passed, 0 failed, 2 skipped
-+ """
-+ And a file named "test_results/TESTS-alice.xml" exists
-+ And a file named "test_results/TESTS-charly.xml" exists
-+ And the file "test_results/TESTS-charly.xml" should contain:
-+ """
-+ <testsuite name="charly.Charly" tests="2" errors="0" failures="0" skipped="1"
-+ """
-+ # HINT: Python < 3.8
-+ # <testsuite errors="0" failures="0" name="charly.Charly" skipped="1" tests="2"
-+ And the file "test_results/TESTS-charly.xml" should contain:
-+ """
-+ <testcase classname="charly.Charly" name="Charly2" status="skipped"
-+ """
-+ And note that "Charly2 is the skipped scenarion in charly.feature"
-+
-diff --git a/issue.features/issue0446.feature b/issue.features/issue0446.feature
-index a2ed892d..901bdec5 100644
---- a/issue.features/issue0446.feature
-+++ b/issue.features/issue0446.feature
-@@ -58,6 +58,7 @@ Feature: Issue #446 -- Support scenario hook-errors with JUnitReporter
- behave.reporter.junit.show_hostname = False
- """
-
-+ @not.with_python.version=3.8
- Scenario: Hook error in before_scenario()
- When I run "behave -f plain --junit features/before_scenario_failure.feature"
- Then it should fail with:
-@@ -86,6 +87,40 @@ Feature: Issue #446 -- Support scenario hook-errors with JUnitReporter
- And note that "the traceback is contained in the XML element <error/>"
-
-
-+ @use.with_python.version=3.8
-+ Scenario: Hook error in before_scenario()
-+ When I run "behave -f plain --junit features/before_scenario_failure.feature"
-+ Then it should fail with:
-+ """
-+ 0 scenarios passed, 1 failed, 0 skipped
-+ """
-+ And the command output should contain:
-+ """
-+ HOOK-ERROR in before_scenario: RuntimeError: OOPS
-+ """
-+ And the file "reports/TESTS-before_scenario_failure.xml" should contain:
-+ """
-+ <testsuite name="before_scenario_failure.Alice" tests="1" errors="1" failures="0" skipped="0"
-+ """
-+ # -- HINT FOR: Python < 3.8
-+ # <testsuite errors="1" failures="0" name="before_scenario_failure.Alice" skipped="0" tests="1"
-+ And the file "reports/TESTS-before_scenario_failure.xml" should contain:
-+ """
-+ <error type="RuntimeError" message="HOOK-ERROR in before_scenario: RuntimeError: OOPS">
-+ """
-+ # -- HINT FOR: Python < 3.8
-+ # <error message="HOOK-ERROR in before_scenario: RuntimeError: OOPS" type="RuntimeError">
-+ And the file "reports/TESTS-before_scenario_failure.xml" should contain:
-+ """
-+ File "features/environment.py", line 6, in before_scenario
-+ cause_hook_failure()
-+ File "features/environment.py", line 2, in cause_hook_failure
-+ raise RuntimeError("OOPS")
-+ """
-+ And note that "the traceback is contained in the XML element <error/>"
-+
-+
-+ @not.with_python.version=3.8
- Scenario: Hook error in after_scenario()
- When I run "behave -f plain --junit features/after_scenario_failure.feature"
- Then it should fail with:
-@@ -114,3 +149,38 @@ Feature: Issue #446 -- Support scenario hook-errors with JUnitReporter
- raise RuntimeError("OOPS")
- """
- And note that "the traceback is contained in the XML element <error/>"
-+
-+
-+ @use.with_python.version=3.8
-+ Scenario: Hook error in after_scenario()
-+ When I run "behave -f plain --junit features/after_scenario_failure.feature"
-+ Then it should fail with:
-+ """
-+ 0 scenarios passed, 1 failed, 0 skipped
-+ """
-+ And the command output should contain:
-+ """
-+ Scenario: B1
-+ Given another step passes ... passed
-+ HOOK-ERROR in after_scenario: RuntimeError: OOPS
-+ """
-+ And the file "reports/TESTS-after_scenario_failure.xml" should contain:
-+ """
-+ <testsuite name="after_scenario_failure.Bob" tests="1" errors="1" failures="0" skipped="0"
-+ """
-+ # -- HINT FOR: Python < 3.8
-+ # <testsuite errors="1" failures="0" name="after_scenario_failure.Bob" skipped="0" tests="1"
-+ And the file "reports/TESTS-after_scenario_failure.xml" should contain:
-+ """
-+ <error type="RuntimeError" message="HOOK-ERROR in after_scenario: RuntimeError: OOPS">
-+ """
-+ # -- HINT FOR: Python < 3.8
-+ # <error message="HOOK-ERROR in after_scenario: RuntimeError: OOPS" type="RuntimeError">
-+ And the file "reports/TESTS-after_scenario_failure.xml" should contain:
-+ """
-+ File "features/environment.py", line 10, in after_scenario
-+ cause_hook_failure()
-+ File "features/environment.py", line 2, in cause_hook_failure
-+ raise RuntimeError("OOPS")
-+ """
-+ And note that "the traceback is contained in the XML element <error/>"
-diff --git a/issue.features/issue0457.feature b/issue.features/issue0457.feature
-index f80640e9..46f96e9c 100644
---- a/issue.features/issue0457.feature
-+++ b/issue.features/issue0457.feature
-@@ -24,6 +24,7 @@ Feature: Issue #457 -- Double-quotes in error messages of JUnit XML reports
- """
-
-
-+ @not.with_python.version=3.8
- Scenario: Use failing assertation in a JUnit XML report
- Given a file named "features/fails1.feature" with:
- """
-@@ -44,6 +45,31 @@ Feature: Issue #457 -- Double-quotes in error messages of JUnit XML reports
- <failure message="FAILED: My name is &quot;Alice&quot;"
- """
-
-+ @use.with_python.version=3.8
-+ Scenario: Use failing assertation in a JUnit XML report
-+ Given a file named "features/fails1.feature" with:
-+ """
-+ Feature:
-+ Scenario: Alice
-+ Given a step fails with message:
-+ '''
-+ My name is "Alice"
-+ '''
-+ """
-+ When I run "behave --junit features/fails1.feature"
-+ Then it should fail with:
-+ """
-+ 0 scenarios passed, 1 failed, 0 skipped
-+ """
-+ And the file "reports/TESTS-fails1.xml" should contain:
-+ """
-+ <failure type="AssertionError" message="FAILED: My name is &quot;Alice&quot;">
-+ """
-+ # -- HINT FOR: Python < 3.8
-+ # <failure message="FAILED: My name is &quot;Alice&quot;"
-+
-+
-+ @not.with_python.version=3.8
- Scenario: Use exception in a JUnit XML report
- Given a file named "features/fails2.feature" with:
- """
-@@ -63,3 +89,26 @@ Feature: Issue #457 -- Double-quotes in error messages of JUnit XML reports
- """
- <error message="My name is &quot;Bob&quot; and &lt;here&gt; I am"
- """
-+
-+ @use.with_python.version=3.8
-+ Scenario: Use exception in a JUnit XML report
-+ Given a file named "features/fails2.feature" with:
-+ """
-+ Feature:
-+ Scenario: Bob
-+ Given a step fails with error and message:
-+ '''
-+ My name is "Bob" and <here> I am
-+ '''
-+ """
-+ When I run "behave --junit features/fails2.feature"
-+ Then it should fail with:
-+ """
-+ 0 scenarios passed, 1 failed, 0 skipped
-+ """
-+ And the file "reports/TESTS-fails2.xml" should contain:
-+ """
-+ <error type="RuntimeError" message="My name is &quot;Bob&quot; and &lt;here&gt; I am">
-+ """
-+ # -- HINT FOR: Python < 3.8
-+ # <error message="My name is &quot;Bob&quot; and &lt;here&gt; I am"