diff --git a/app/buck2_common/src/file_ops/error.rs b/app/buck2_common/src/file_ops/error.rs index d0d8f6aa12cc4..e2ad6a342892c 100644 --- a/app/buck2_common/src/file_ops/error.rs +++ b/app/buck2_common/src/file_ops/error.rs @@ -132,7 +132,10 @@ pub(super) fn extended_ignore_error<'a>( return Some(ReadDirError::DirectoryDoesNotExist { path: path.to_owned(), suggestion: DirectoryDoesNotExistSuggestion::Typo( - suggestion.to_owned(), + match parent.path().join_normalized(suggestion) { + Ok(p) => p.as_str().to_owned(), + Err(_) => suggestion.to_owned() + } ), }); } diff --git a/tests/core/errors/test_errors.py b/tests/core/errors/test_errors.py index f9d39f80dedbd..031217a88be69 100644 --- a/tests/core/errors/test_errors.py +++ b/tests/core/errors/test_errors.py @@ -61,6 +61,8 @@ async def test_package_listing_errors(buck: Buck) -> None: "//package_listing/data.file/subdir:target", # Missing directory due to typo "//package_listings:", + # Missing directory due to typo shows full path + "//package_listing/data.file:targets", # Missing directory due to being in the wrong cell "//something:", ]: diff --git a/tests/core/errors/test_errors_data/package_listing/expected.golden.out b/tests/core/errors/test_errors_data/package_listing/expected.golden.out index adb6845e7a071..a40246ca26c03 100644 --- a/tests/core/errors/test_errors_data/package_listing/expected.golden.out +++ b/tests/core/errors/test_errors_data/package_listing/expected.golden.out @@ -75,6 +75,18 @@ Caused by: ^-----------------------------^ path `root//package_listing/data.file` is a file, not a directory +Command failed: +Error evaluating expression: + //package_listing/data.file:targets: + ^-----------------^ + + +Caused by: + package `root//package_listing/data.file:targets:` does not exist + ^--------------------^ + dir `root//package_listing/data.file:targets` does not exist. Did you mean `root//package_listing/data.file:target`? + + Command failed: