From 78c6efcfb4a4f6207d0f5186dcfc0d32f3fd1ce5 Mon Sep 17 00:00:00 2001 From: Bianca Henderson Date: Fri, 9 Aug 2024 10:22:28 -0400 Subject: [PATCH 1/4] Replace sys.exit with CondaBuildUserError exception in convert.py --- conda_build/convert.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/conda_build/convert.py b/conda_build/convert.py index e910d47e21..75803a4c83 100644 --- a/conda_build/convert.py +++ b/conda_build/convert.py @@ -18,6 +18,7 @@ from pathlib import Path from typing import TYPE_CHECKING +from .exceptions import CondaBuildUserError from .utils import ensure_list, filter_info_files, walk if TYPE_CHECKING: @@ -821,10 +822,12 @@ def conda_convert( sys.exit() if not show_imports and len(platforms) == 0: - sys.exit("Error: --platform option required for conda package conversion.") + raise CondaBuildUserError( + "Error: --platform option required for conda package conversion." + ) if len(retrieve_c_extensions(file_path)) > 0 and not force: - sys.exit( + raise CondaBuildUserError( f"WARNING: Package {os.path.basename(file_path)} contains C extensions; skipping conversion. " "Use -f to force conversion." ) From 9278e780075d5bd42d518d90fb0396c8f524d532 Mon Sep 17 00:00:00 2001 From: Bianca Henderson Date: Fri, 9 Aug 2024 10:23:55 -0400 Subject: [PATCH 2/4] Update unit tests --- tests/test_api_convert.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/test_api_convert.py b/tests/test_api_convert.py index c0e46b7bf3..ab70e19cd3 100644 --- a/tests/test_api_convert.py +++ b/tests/test_api_convert.py @@ -10,6 +10,7 @@ from conda.gateways.connection.download import download from conda_build import api +from conda_build.exceptions import CondaBuildUserError from conda_build.utils import on_win, package_has_file from .utils import assert_package_consistency, metadata_dir @@ -96,13 +97,12 @@ def test_no_platform(base_platform, package): fn = f"{package_name}-py36_0.tar.bz2" download(f, fn) - with pytest.raises(SystemExit) as e: + with pytest.raises( + CondaBuildUserError, + match="Error: --platform option required for conda package conversion.", + ): api.convert(fn, platforms=None) - assert "Error: --platform option required for conda package conversion." in str( - e.value - ) - @pytest.mark.parametrize("base_platform", ["linux", "win", "osx"]) @pytest.mark.parametrize("package", [("cryptography-1.8.1", "__about__.py")]) @@ -121,7 +121,7 @@ def test_c_extension_error(base_platform, package): download(f, fn) for platform in platforms: - with pytest.raises(SystemExit) as e: + with pytest.raises(CondaBuildUserError) as e: api.convert(fn, platforms=platform) assert ( From 7b0aef28e3012cf04f991fec00294e99a7f1f13e Mon Sep 17 00:00:00 2001 From: Bianca Henderson Date: Fri, 9 Aug 2024 10:27:52 -0400 Subject: [PATCH 3/4] Update unit tests --- tests/test_api_convert.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/test_api_convert.py b/tests/test_api_convert.py index ab70e19cd3..a2651ceba0 100644 --- a/tests/test_api_convert.py +++ b/tests/test_api_convert.py @@ -121,14 +121,13 @@ def test_c_extension_error(base_platform, package): download(f, fn) for platform in platforms: - with pytest.raises(CondaBuildUserError) as e: + with pytest.raises( + CondaBuildUserError, + match=f"WARNING: Package {fn} contains C extensions; skipping conversion. " + "Use -f to force conversion.", + ): api.convert(fn, platforms=platform) - assert ( - f"WARNING: Package {fn} contains C extensions; skipping conversion. " - "Use -f to force conversion." - ) in str(e.value) - @pytest.mark.parametrize("base_platform", ["linux", "win", "osx"]) @pytest.mark.parametrize("package", [("cryptography-1.8.1", "__about__.py")]) From cd9751d25eed1bcad5d79b155de543cc195b3619 Mon Sep 17 00:00:00 2001 From: Bianca Henderson Date: Fri, 9 Aug 2024 13:30:46 -0400 Subject: [PATCH 4/4] Replace sys.exit call in convert.py with a return statement, update unit tests --- conda_build/convert.py | 3 +-- tests/test_api_convert.py | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/conda_build/convert.py b/conda_build/convert.py index 75803a4c83..628ba95109 100644 --- a/conda_build/convert.py +++ b/conda_build/convert.py @@ -12,7 +12,6 @@ import os import re import shutil -import sys import tarfile import tempfile from pathlib import Path @@ -819,7 +818,7 @@ def conda_convert( else: for c_extension in imports: print(c_extension) - sys.exit() + return if not show_imports and len(platforms) == 0: raise CondaBuildUserError( diff --git a/tests/test_api_convert.py b/tests/test_api_convert.py index a2651ceba0..9b0526ed54 100644 --- a/tests/test_api_convert.py +++ b/tests/test_api_convert.py @@ -61,8 +61,7 @@ def test_show_imports(base_platform, package, capfd): download(f, fn) for platform in platforms: - with pytest.raises(SystemExit): - api.convert(fn, platforms=platform, show_imports=True) + api.convert(fn, platforms=platform, show_imports=True) output, error = capfd.readouterr() @@ -81,8 +80,7 @@ def test_no_imports_found(base_platform, package, capfd): fn = f"{package_name}-py36_0.tar.bz2" download(f, fn) - with pytest.raises(SystemExit): - api.convert(fn, platforms=None, show_imports=True) + api.convert(fn, platforms=None, show_imports=True) output, error = capfd.readouterr() assert "No imports found." in output