diff --git a/open_ce/build_tree.py b/open_ce/build_tree.py index bdcb9086..5a83d73e 100644 --- a/open_ce/build_tree.py +++ b/open_ce/build_tree.py @@ -29,7 +29,7 @@ from open_ce import env_config from open_ce import validate_config #pylint: disable=cyclic-import from open_ce import build_feedstock -from open_ce.errors import OpenCEError, Error, log +from open_ce.errors import OpenCEError, Error, log, show_warning from open_ce.conda_env_file_generator import CondaEnvFileGenerator from open_ce.build_command import BuildCommand # pylint: enable=wrong-import-position,wrong-import-order @@ -490,7 +490,7 @@ def _detect_cycle(self): cycle_print += " -> ".join(node.build_command.recipe if node.build_command else str(node.packages) for node in cycle + [cycle[0]]) + "\n" if cycle_print: - raise OpenCEError(Error.BUILD_TREE_CYCLE, cycle_print) + show_warning(Error.BUILD_TREE_CYCLE, cycle_print) def build_command_dependencies(self, node): ''' diff --git a/tests/build_tree_test.py b/tests/build_tree_test.py index 1d88902e..568af42b 100644 --- a/tests/build_tree_test.py +++ b/tests/build_tree_test.py @@ -532,7 +532,7 @@ def test_build_tree_len(): assert len(mock_build_tree) == 3 -def test_build_tree_cycle_fail(): +def test_build_tree_cycle_fail(mocker, caplog): #pylint: disable=unused-argument ''' Tests that a cycle is detected in a build_tree. ''' @@ -573,15 +573,14 @@ def test_build_tree_cycle_fail(): mock_build_tree._tree = cycle_build_commands - with pytest.raises(OpenCEError) as exc: - mock_build_tree._detect_cycle() - - assert "Build dependencies should form a Directed Acyclic Graph." in str(exc.value) - assert any(["recipe1 -> recipe2 -> recipe1" in str(exc.value), - "recipe2 -> recipe1 -> recipe2" in str(exc.value), - "recipe1 -> recipe3 -> recipe2 -> recipe1" in str(exc.value), - "recipe2 -> recipe1 -> recipe3 -> recipe2" in str(exc.value), - "recipe3 -> recipe2 -> recipe1 -> recipe2" in str(exc.value)]) + mock_build_tree._detect_cycle() + + assert "Build dependencies should form a Directed Acyclic Graph." in caplog.text + assert any(["recipe1 -> recipe2 -> recipe1" in caplog.text, + "recipe2 -> recipe1 -> recipe2" in caplog.text, + "recipe1 -> recipe3 -> recipe2 -> recipe1" in caplog.text, + "recipe2 -> recipe1 -> recipe3 -> recipe2" in caplog.text, + "recipe3 -> recipe2 -> recipe1 -> recipe2" in caplog.text]) def test_get_installable_package_for_non_runtime_package(): '''