diff --git a/synthtool/gcp/common.py b/synthtool/gcp/common.py index 6298a36a9..d12859241 100644 --- a/synthtool/gcp/common.py +++ b/synthtool/gcp/common.py @@ -381,7 +381,7 @@ def detect_versions( pass # Sort the sub directories alphabetically. - sub_dirs = sorted([p.name for p in Path(path).glob("*v[1-9]*")]) + sub_dirs = sorted([p.name for p in Path(path).rglob("*v[1-9]*") if p.is_dir()]) if sub_dirs: # if `default_version` is not specified, return the sorted directories. diff --git a/tests/test_common.py b/tests/test_common.py index 7bff5b5ff..0677e0d35 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -233,3 +233,19 @@ def test_detect_versions_with_default_version_from_metadata(): json.dump(test_json, metadata) versions = detect_versions(default_first=True) assert ["api_v3", "api_v1", "api_v2"] == versions + + +def test_detect_versions_nested_directory(): + temp_dir = Path(tempfile.mkdtemp()) + src_dir = temp_dir / "src" / "src2" / "src3" + vs = ("v1", "v2", "v3") + for v in vs: + os.makedirs(src_dir / v) + + with util.chdir(temp_dir): + versions = detect_versions(default_version="v1") + assert ["v2", "v3", "v1"] == versions + versions = detect_versions(default_version="v2") + assert ["v1", "v3", "v2"] == versions + versions = detect_versions(default_version="v3") + assert ["v1", "v2", "v3"] == versions