URL: http://github.com/fastapi/fastapi-cli/pull/91.patch
+# +# +# def test_schema_invalid_package() -> None: +# with changing_dir(assets_path): +# result = runner.invoke( +# app, ["schema", "broken_package/mod/app.py"] +# ) +# assert result.exit_code == 1, result.output +# assert isinstance(result.exception, ImportError) +# assert "attempted relative import beyond top-level package" in str(result.exception) + + def test_run_help() -> None: result = runner.invoke(app, ["run", "--help"]) assert result.exit_code == 0, result.output diff --git a/tests/test_utils_package.py b/tests/test_utils_package.py index 407561da..c43c9b98 100644 --- a/tests/test_utils_package.py +++ b/tests/test_utils_package.py @@ -3,7 +3,7 @@ import pytest from pytest import CaptureFixture -from fastapi_cli.discover import get_import_data +from fastapi_cli.discover import get_app, get_import_data from fastapi_cli.exceptions import FastAPICLIException from tests.utils import changing_dir @@ -169,6 +169,17 @@ def test_broken_package_dir(capsys: CaptureFixture[str]) -> None: assert "Ensure all the package directories have an __init__.py file" in captured.out +def test_get_app_broken_package_dir(capsys: CaptureFixture[str]) -> None: + with changing_dir(assets_path): + # TODO (when deprecating Python 3.8): remove ValueError + with pytest.raises((ImportError, ValueError)): + get_app(path=Path("broken_package/mod/app.py")) + + captured = capsys.readouterr() + assert "Import error:" in captured.out + assert "Ensure all the package directories have an __init__.py file" in captured.out + + def test_package_dir_no_app() -> None: with changing_dir(assets_path): with pytest.raises(FastAPICLIException) as e: From 5bf9ea891b6a421227f9f4882fb5225d4864284f Mon Sep 17 00:00:00 2001 From: "Michael \"M3\" Lasevich"Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: