diff --git a/tools/azure-sdk-tools/ci_tools/dependency_analysis.py b/tools/azure-sdk-tools/ci_tools/dependency_analysis.py index 59a5d15a9b45..d4192ff858a5 100755 --- a/tools/azure-sdk-tools/ci_tools/dependency_analysis.py +++ b/tools/azure-sdk-tools/ci_tools/dependency_analysis.py @@ -59,9 +59,8 @@ def get_lib_deps(base_dir: str) -> Tuple[Dict[str, Dict[str, Any]], Dict[str, Di packages = {} dependencies = {} for lib_dir in discover_targeted_packages("azure*", base_dir): - setup_path = os.path.join(lib_dir, "setup.py") try: - parsed = ParsedSetup.from_path(setup_path) + parsed = ParsedSetup.from_path(lib_dir) lib_name, version, requires = parsed.name, parsed.version, parsed.requires packages[lib_name] = {"version": version, "source": lib_dir, "deps": []} @@ -76,7 +75,7 @@ def get_lib_deps(base_dir: str) -> Tuple[Dict[str, Dict[str, Any]], Dict[str, Di packages[lib_name]["deps"].append({"name": req_name, "version": str(spec)}) record_dep(dependencies, req_name, str(spec), lib_name) except: - print("Failed to parse %s" % (setup_path)) + print(f"Failed to parse setup.py or pyproject.toml at {lib_dir}") return packages, dependencies diff --git a/tools/azure-sdk-tools/tests/test_pyproject_interactions.py b/tools/azure-sdk-tools/tests/test_pyproject_interactions.py index e5a10faded72..afcbf180f8a2 100644 --- a/tools/azure-sdk-tools/tests/test_pyproject_interactions.py +++ b/tools/azure-sdk-tools/tests/test_pyproject_interactions.py @@ -3,8 +3,10 @@ import pytest +from ci_tools.dependency_analysis import get_lib_deps from ci_tools.parsing import update_build_config, get_build_config, get_config_setting from ci_tools.environment_exclusions import is_check_enabled +from ci_tools.variables import discover_repo_root integration_folder = os.path.join(os.path.dirname(__file__), "integration") pyproject_folder = os.path.join(integration_folder, "scenarios", "pyproject_build_config") @@ -88,4 +90,13 @@ def test_pyproject_update_check_override(): assert update_result == build_config reloaded_build_config = get_build_config(temp_dir) - assert reloaded_build_config == update_result \ No newline at end of file + assert reloaded_build_config == update_result + + +def test_pyproject_get_lib_deps(): + all_packages, _ = get_lib_deps(discover_repo_root()) + # Ensure that libraries with pyproject.toml files are fetched correctly; azure-keyvault-keys is an example + pyproject_info = all_packages["azure-keyvault-keys"] + assert pyproject_info["version"] + assert pyproject_info["source"] + assert len(pyproject_info["deps"]) > 0