diff options
author | Marius Bakke <marius@gnu.org> | 2022-01-22 09:33:10 +0100 |
---|---|---|
committer | Marius Bakke <marius@gnu.org> | 2022-01-22 10:23:01 +0100 |
commit | c940b0e38e40d22c8fd13ca53cf31075349bcb29 (patch) | |
tree | e97aaa726e6ff32c3310a21790fc2590074de5c6 /gnu | |
parent | 22acec058803d98a0ed3bacc0734339cadae0d74 (diff) | |
download | guix-c940b0e38e40d22c8fd13ca53cf31075349bcb29.tar.gz |
gnu: behave: Update to 1.2.7.dev2.
* gnu/packages/check.scm (behave): Update to 1.2.7.dev2. [source]: Switch to GIT-FETCH. Remove patches. [arguments]: Remove #:test-target. Add #:phases. [propagated-inputs]: Add PYTHON-COLORAMA and PYTHON-CUCUMBER-TAG-EXPRESSIONS. * gnu/packages/patches/behave-skip-a-couple-of-tests.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/check.scm | 32 | ||||
-rw-r--r-- | gnu/packages/patches/behave-skip-a-couple-of-tests.patch | 462 |
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 "Alice"" - """ - -+ @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 "Alice""> -+ """ -+ # -- HINT FOR: Python < 3.8 -+ # <failure message="FAILED: My name is "Alice"" -+ -+ -+ @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 "Bob" and <here> 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 "Bob" and <here> I am"> -+ """ -+ # -- HINT FOR: Python < 3.8 -+ # <error message="My name is "Bob" and <here> I am" |