diff --git a/0001-support-ref-link-for-each-step.patch b/0001-support-ref-link-for-each-step.patch new file mode 100644 index 0000000..0cf1db9 --- /dev/null +++ b/0001-support-ref-link-for-each-step.patch @@ -0,0 +1,31 @@ +From ad04991a5cd67f946971cc15043f95a8eae29711 Mon Sep 17 00:00:00 2001 +From: Ziv Thaller +Date: Mon, 21 Mar 2016 14:21:14 +0200 +Subject: [PATCH 1/2] support ref link for each step + +(cherry picked from commit 3b90000922638f56e9de521bc51f1ed46a5203c7) +--- + behave/formatter/sphinx_steps.py | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/behave/formatter/sphinx_steps.py b/behave/formatter/sphinx_steps.py +index 79768bb..3833b65 100644 +--- a/behave/formatter/sphinx_steps.py ++++ b/behave/formatter/sphinx_steps.py +@@ -294,6 +294,13 @@ The following step definitions are provided here. + self.document.write("%s\n" % step_definition_doc) + self.document.write("\n") + ++ # Add step label ++ from docutils.nodes import fully_normalize_name ++ step_text = fully_normalize_name(step_text) ++ step_lable = ".. _" + step_text + ":" + "\n" ++ self.document.write(step_lable) ++ self.document.write("\n") ++ + + # ----------------------------------------------------------------------------- + # CLASS: SphinxStepsFormatter +-- +2.9.2 + diff --git a/0002-Add-step-label-to-be-used-in-step-refs-like.patch b/0002-Add-step-label-to-be-used-in-step-refs-like.patch new file mode 100644 index 0000000..49ad321 --- /dev/null +++ b/0002-Add-step-label-to-be-used-in-step-refs-like.patch @@ -0,0 +1,125 @@ +From 539d2bcbc0c855278cd3b639097c9e9f4ef20909 Mon Sep 17 00:00:00 2001 +From: jenisys +Date: Tue, 22 Mar 2016 21:56:48 +0100 +Subject: [PATCH 2/2] Add step-label to be used in step-refs, like: # -- + FILE: something.rst See also :ref:`When I create a database + "{db_server}:{db_name}"` + +NOTES: +* Step-labels are just before heading. +* docutils must be installed to use them. + +(cherry picked from commit d3f7a2ac99c6f7faae331b05f56096eb851d11c9) +--- + CHANGES.rst | 4 ++++ + behave/formatter/sphinx_steps.py | 29 ++++++++++++++++++++++------- + behave/formatter/sphinx_util.py | 4 +++- + 3 files changed, 29 insertions(+), 8 deletions(-) + +diff --git a/CHANGES.rst b/CHANGES.rst +index 1bdb644..91aa5cf 100644 +--- a/CHANGES.rst ++++ b/CHANGES.rst +@@ -8,6 +8,10 @@ GOALS: + + - Improve support for Windows + ++FORMATTERS: ++ ++ * pull #423: sphinx.steps: Support ref link for each step (provided by: ZivThaller) ++ + + Version: 1.2.5 (2015-01-31) + ------------------------------------------------------------------------------- +diff --git a/behave/formatter/sphinx_steps.py b/behave/formatter/sphinx_steps.py +index 3833b65..4cf555d 100644 +--- a/behave/formatter/sphinx_steps.py ++++ b/behave/formatter/sphinx_steps.py +@@ -10,6 +10,9 @@ TODO: + + .. seealso:: + http://sphinx-doc.org/ ++ ++.. note:: REQUIRES docutils ++ :mod:`docutils` are needed to generate step-label for step references. + """ + + from __future__ import absolute_import, print_function +@@ -21,6 +24,16 @@ import inspect + import os.path + import sys + ++try: ++ # -- SAFETY-NET: ++ import docutils ++ has_docutils = True ++ ++ # -- NEEDED FOR: step-labels (and step-refs) ++ from docutils.nodes import fully_normalize_name ++except ImportError: ++ has_docutils = False ++ + + # ----------------------------------------------------------------------------- + # HELPER CLASS: +@@ -102,6 +115,7 @@ class SphinxStepsDocumentGenerator(object): + shows_step_module_info = True + shows_step_module_overview = True + make_step_index_entries = True ++ make_step_labels = has_docutils + + document_separator = "# -- DOCUMENT-END " + "-" * 60 + step_document_prefix = "step_module." +@@ -287,19 +301,20 @@ The following step definitions are provided here. + index_id = self.make_step_definition_index_id(step_definition) + + heading = step_text ++ step_label = None + if self.step_heading_prefix: + heading = self.step_heading_prefix + step_text +- self.document.write_heading(heading, level=2, index_id=index_id) ++ if has_docutils and self.make_step_labels: ++ # -- ADD STEP-LABEL (supports: step-refs by name) ++ # EXAMPLE: See also :ref:`When my step does "{something}"`. ++ step_label = fully_normalize_name(step_text) ++ # SKIP-HERE: self.document.write(".. _%s:\n\n" % step_label) ++ self.document.write_heading(heading, level=2, index_id=index_id, ++ label=step_label) + step_definition_doc = self.make_step_definition_doc(step_definition) + self.document.write("%s\n" % step_definition_doc) + self.document.write("\n") + +- # Add step label +- from docutils.nodes import fully_normalize_name +- step_text = fully_normalize_name(step_text) +- step_lable = ".. _" + step_text + ":" + "\n" +- self.document.write(step_lable) +- self.document.write("\n") + + + # ----------------------------------------------------------------------------- +diff --git a/behave/formatter/sphinx_util.py b/behave/formatter/sphinx_util.py +index e1f7846..5e5cfbf 100644 +--- a/behave/formatter/sphinx_util.py ++++ b/behave/formatter/sphinx_util.py +@@ -40,7 +40,7 @@ class DocumentWriter(object): + self.stream.close() + self.stream = None + +- def write_heading(self, heading, level=0, index_id=None): ++ def write_heading(self, heading, level=0, index_id=None, label=None): + assert self.stream + assert heading, "Heading should not be empty" + assert 0 <= level < len(self.heading_styles) +@@ -55,6 +55,8 @@ class DocumentWriter(object): + if isinstance(index_id, (list, tuple)): + index_id = ", ".join(index_id) + self.stream.write(".. index:: %s\n\n" % index_id) ++ if label: ++ self.stream.write(".. _%s:\n\n" % label) + if level == 0: + self.stream.write("%s\n" % separator) + self.stream.write("%s\n" % heading) +-- +2.9.2 + diff --git a/python-behave.spec b/python-behave.spec index b6ad94e..5b4af94 100644 --- a/python-behave.spec +++ b/python-behave.spec @@ -16,6 +16,10 @@ URL: http://pypi.python.org/pypi/%{modname} Source0: https://github.com/behave/behave/archive/v%{version}/%{modname}-%{version}.tar.gz Patch0: HTML-Formatter.patch Patch1: html_formatter_no_set_codecs.patch +# https://github.com/behave/behave/commit/3b90000922638f56e9de521bc51f1ed46a5203c7 +Patch2: 0001-support-ref-link-for-each-step.patch +# https://github.com/behave/behave/commit/d3f7a2ac99c6f7faae331b05f56096eb851d11c9 +Patch3: 0002-Add-step-label-to-be-used-in-step-refs-like.patch BuildArch: noarch @@ -175,6 +179,7 @@ nosetests-%{python3_version} -v %changelog * Fri Aug 12 2016 Igor Gnatenko - 1.2.5-17 - Modernize spec +- Backport patch to put label into sphinx before step * Tue Jul 19 2016 Fedora Release Engineering - 1.2.5-16 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages