From f104d71fb744a3bad40159b6ced1cd47b6749d1e Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Wed, 4 Jan 2017 19:44:16 -0800 Subject: [PATCH] Update to 0.9.155, fix tests with Python 3.6 and lxml 3.7 Fixes submitted upstream. Note on the change from `rm -r` to `rm -rf`: there is a directory named `test` nested in another directory named `test` (`pcs/test/tools/test`). Depending on the order in which they're found, `rm -r` might wind up trying to remove `pcs/test/tools/test` after `pcs/test`, which is an error and causes %check to fail. `rm -rf` ignores missing targets, so it succeeds even in this scenario. --- ...ange-in-an-error-message-in-lxml-3.7.patch | 135 ++++++++++++++++++ 122.patch | 31 ++++ fedfix.patch | 2 +- pcs.spec | 25 +++- 4 files changed, 186 insertions(+), 7 deletions(-) create mode 100644 0001-Tests-handle-change-in-an-error-message-in-lxml-3.7.patch create mode 100644 122.patch diff --git a/0001-Tests-handle-change-in-an-error-message-in-lxml-3.7.patch b/0001-Tests-handle-change-in-an-error-message-in-lxml-3.7.patch new file mode 100644 index 0000000..cce147f --- /dev/null +++ b/0001-Tests-handle-change-in-an-error-message-in-lxml-3.7.patch @@ -0,0 +1,135 @@ +From 79543d3f4864ad3cbff98c2600033c49158d79ac Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Wed, 4 Jan 2017 17:54:15 -0800 +Subject: [PATCH] Tests: handle change in an error message in lxml 3.7 + +--- + pcs/lib/commands/test/test_resource_agent.py | 4 ++-- + pcs/lib/commands/test/test_stonith_agent.py | 4 ++-- + pcs/lib/test/test_resource_agent.py | 5 +++-- + pcs/test/tools/assertions.py | 11 +++++++++++ + pcs/test/test_lib_cib_tools.py | 4 ++-- + 4 files changed, 20 insertions(+), 8 deletions(-) + +diff --git a/pcs/lib/commands/test/test_resource_agent.py b/pcs/lib/commands/test/test_resource_agent.py +index 9652591..ed86d00 100644 +--- a/pcs/lib/commands/test/test_resource_agent.py ++++ b/pcs/lib/commands/test/test_resource_agent.py +@@ -8,7 +8,7 @@ from __future__ import ( + import logging + from lxml import etree + +-from pcs.test.tools.assertions import assert_raise_library_error ++from pcs.test.tools.assertions import assert_raise_library_error, start_tag_error_text + from pcs.test.tools.custom_mock import MockLibraryReportProcessor + from pcs.test.tools.pcs_unittest import mock, TestCase + +@@ -353,7 +353,7 @@ class TestDescribeAgent(TestCase): + report_codes.UNABLE_TO_GET_AGENT_METADATA, + { + "agent": "ocf:test:Dummy", +- "reason": "Start tag expected, '<' not found, line 1, column 1", ++ "reason": start_tag_error_text(), + } + ) + ) +diff --git a/pcs/lib/commands/test/test_stonith_agent.py b/pcs/lib/commands/test/test_stonith_agent.py +index eaf5f93..d1e3ed0 100644 +--- a/pcs/lib/commands/test/test_stonith_agent.py ++++ b/pcs/lib/commands/test/test_stonith_agent.py +@@ -8,7 +8,7 @@ from __future__ import ( + import logging + from lxml import etree + +-from pcs.test.tools.assertions import assert_raise_library_error ++from pcs.test.tools.assertions import assert_raise_library_error, start_tag_error_text + from pcs.test.tools.custom_mock import MockLibraryReportProcessor + from pcs.test.tools.pcs_unittest import mock, TestCase + +@@ -204,7 +204,7 @@ class TestDescribeAgent(TestCase): + report_codes.UNABLE_TO_GET_AGENT_METADATA, + { + "agent": "fence_dummy", +- "reason": "Start tag expected, '<' not found, line 1, column 1", ++ "reason": start_tag_error_text(), + } + ) + ) +diff --git a/pcs/lib/test/test_resource_agent.py b/pcs/lib/test/test_resource_agent.py +index 5298415..e45b359 100644 +--- a/pcs/lib/test/test_resource_agent.py ++++ b/pcs/lib/test/test_resource_agent.py +@@ -12,6 +12,7 @@ from pcs.test.tools.assertions import ( + ExtendedAssertionsMixin, + assert_raise_library_error, + assert_xml_equal, ++ start_tag_error_text, + ) + from pcs.test.tools.misc import create_patcher + from pcs.test.tools.pcs_unittest import TestCase, mock +@@ -1069,7 +1070,7 @@ class StonithdMetadataGetMetadataTest(TestCase, ExtendedAssertionsMixin): + self.agent._get_metadata, + { + "agent": "stonithd", +- "message": "Start tag expected, '<' not found, line 1, column 1", ++ "message": start_tag_error_text(), + } + ) + +@@ -1196,7 +1197,7 @@ class CrmAgentMetadataGetMetadataTest(TestCase, ExtendedAssertionsMixin): + self.agent._get_metadata, + { + "agent": self.agent_name, +- "message": "Start tag expected, '<' not found, line 1, column 1", ++ "message": start_tag_error_text(), + } + ) + +diff --git a/pcs/test/tools/assertions.py b/pcs/test/tools/assertions.py +index 4c8f8df..16e2571 100644 +--- a/pcs/test/tools/assertions.py ++++ b/pcs/test/tools/assertions.py +@@ -7,10 +7,21 @@ from __future__ import ( + + import doctest + from lxml.doctestcompare import LXMLOutputChecker ++from lxml.etree import LXML_VERSION + + from pcs.lib.errors import LibraryError + from pcs.test.tools.misc import prepare_diff + ++def start_tag_error_text(): ++ """lxml 3.7+ gives a longer 'start tag expected' error message, ++ handle it here so multiple tests can just get the appropriate ++ string from this function. ++ """ ++ msg = "Start tag expected, '<' not found, line 1, column 1" ++ if LXML_VERSION >= (3, 7, 0, 0): ++ msg += " (, line 1)" ++ return msg ++ + def console_report(*lines): + #after lines append last new line + return "\n".join(lines + ("",)) +--- a/pcs/test/test_lib_cib_tools.py ++++ b/pcs/test/test_lib_cib_tools.py +@@ -13,6 +13,7 @@ + from pcs.test.tools.assertions import ( + assert_raise_library_error, + assert_xml_equal, ++ start_tag_error_text, + ) + from pcs.test.tools.misc import get_test_resource as rc + from pcs.test.tools.pcs_unittest import mock +@@ -488,7 +489,7 @@ + report_codes.CIB_UPGRADE_FAILED, + { + "reason": +- "Start tag expected, '<' not found, line 1, column 1", ++ start_tag_error_text(), + } + ) + ) +-- +2.11.0 + diff --git a/122.patch b/122.patch new file mode 100644 index 0000000..818da6a --- /dev/null +++ b/122.patch @@ -0,0 +1,31 @@ +From cbc8eb0eeff7ac9076d1455ac4f54113c84dd693 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Wed, 4 Jan 2017 16:00:15 -0800 +Subject: [PATCH] Fix tests for Python 3.6 + +We need to set a proper value for `env.booth.name` in two more +tests, or Python chokes trying to `os.path.join()` a MagicMock. +--- + pcs/lib/commands/test/test_booth.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/pcs/lib/commands/test/test_booth.py b/pcs/lib/commands/test/test_booth.py +index c24eea2..872760f 100644 +--- a/pcs/lib/commands/test/test_booth.py ++++ b/pcs/lib/commands/test/test_booth.py +@@ -111,6 +111,7 @@ def test_raises_when_booth_config_in_use(self): + @patch_commands("parse", mock.Mock(side_effect=LibraryError())) + def test_raises_when_cannot_get_content_of_config(self): + env = mock.MagicMock() ++ env.booth.name = "somename" + assert_raise_library_error( + lambda: commands.config_destroy(env), + ( +@@ -126,6 +127,7 @@ def test_raises_when_cannot_get_content_of_config(self): + @patch_commands("parse", mock.Mock(side_effect=LibraryError())) + def test_remove_config_even_if_cannot_get_its_content_when_forced(self): + env = mock.MagicMock() ++ env.booth.name = "somename" + env.report_processor = MockLibraryReportProcessor() + commands.config_destroy(env, ignore_config_load_problems=True) + env.booth.remove_config.assert_called_once_with() diff --git a/fedfix.patch b/fedfix.patch index aa0e181..f3a1544 100644 --- a/fedfix.patch +++ b/fedfix.patch @@ -38,7 +38,7 @@ index 9a4a4ba..4fd3786 100644 - gem install --verbose --no-rdoc --no-ri -l -i vendor/bundle/ruby \ - vendor/cache/backports-3.6.8.gem \ - vendor/cache/json-1.8.3.gem \ -- vendor/cache/multi_json-1.12.1.gem \ +- vendor/cache/multi_json-1.12.0.gem \ - vendor/cache/open4-1.3.4.gem \ + gem install --force --verbose --no-rdoc --no-ri -l -i vendor/bundle/ruby \ vendor/cache/orderedhash-0.0.6.gem \ diff --git a/pcs.spec b/pcs.spec index eb3c330..f7658e9 100644 --- a/pcs.spec +++ b/pcs.spec @@ -1,6 +1,6 @@ Name: pcs -Version: 0.9.154 -Release: 3%{?dist} +Version: 0.9.155 +Release: 1%{?dist} License: GPLv2 URL: https://github.com/ClusterLabs/pcs Group: System Environment/Base @@ -18,6 +18,11 @@ Source14: https://rubygems.org/downloads/sinatra-1.4.7.gem Source15: https://rubygems.org/downloads/sinatra-contrib-1.4.7.gem Patch0: fedfix.patch +# Fix tests for Python 3.6 +Patch1: https://github.com/ClusterLabs/pcs/pull/122.patch +# Fix tests for lxml 3.7 +# https://github.com/ClusterLabs/pcs/pull/121 , rediffed on 0.9.155 +Patch2: 0001-Tests-handle-change-in-an-error-message-in-lxml-3.7.patch # git for patches BuildRequires: git @@ -93,6 +98,8 @@ UpdateTimestamps() { } %patch0 -p1 +%patch1 -p1 +%patch2 -p1 UpdateTimestamps -p1 %{PATCH0} mkdir -p pcsd/.bundle @@ -157,7 +164,7 @@ run_all_tests(){ test_result_python=$? #remove pcs tests, we do not distribute them in rpm - find ${sitelib}/pcs -name test -type d -print0|xargs -0 rm -r -v -- + find ${sitelib}/pcs -name test -type d -print0|xargs -0 rm -rf -v -- #run pcsd tests and remove them @@ -202,6 +209,8 @@ end %systemd_postun_with_restart pcsd.service %files +%doc README +%license COPYING %{python3_sitelib}/pcs %{python3_sitelib}/pcs-%{version}-py3.*.egg-info /usr/sbin/pcs @@ -229,10 +238,14 @@ end %exclude %{python3_sitelib}/pcs/pcs.8 %exclude %{python3_sitelib}/pcs/pcs -%doc COPYING README - %changelog -* Mon Dec 19 2016 Miro Hrončok - 0.9.154-3 +* Wed Jan 04 2017 Adam Williamson - 0.9.155-1 +- Latest release 0.9.155 +- Fix tests with Python 3.6 and lxml 3.7 +- Package the license as license, not doc +- Use -f param for rm when wiping test directories as they are nested now + +* Mon Dec 19 2016 Miro Hrončok - Rebuild for Python 3.6 * Tue Oct 18 2016 Tomas Jelinek - 0.9.154-2