#8027 Hide implementation details in invalid cd call (#8049)

# Description

[GH issue](https://github.com/nushell/nushell/issues/8027)

The current error message for a cd command includes a Debug output of
the `io::Error` being returned from `canonicalize_with`, so it's been
replaced with a more user friendly and readable depiction of the error.

# User-Facing Changes

As described in the issue, I've changed the error message for a cd into
a directory that does not exist from:
```
/home/rdevenney/projects/open_source/nushell〉cd asdfasdf                                                                               02/11/2023 08:59:59 PM
Error: nu:🐚:directory_not_found (link)

 × Directory not found
   ╭─[entry #2:1:1]
 1 │ cd asdfasdf
   ·    ────┬───
   ·        ╰── directory not found
   ╰────
  help: IO Error: Os { code: 2, kind: NotFound, message: "No such file or directory" }
```
To:
```
/home/rdevenney/projects/open_source/nushell〉cd asdfasdf                                                                               02/11/2023 08:58:38 PM
Error: nu:🐚:directory_not_found (link)

  × Directory not found
   ╭─[entry #1:1:1]
 1 │ cd asdfasdf
   ·    ────┬───
   ·        ╰── directory not found
   ╰────
  help: IO Error: DirectoryNotFound
```
# Tests + Formatting

Don't forget to add tests that cover your changes.

Make sure you've run and fixed any issues with these commands:

- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- `cargo test --workspace` to check that all tests pass

# After Submitting

If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.

---------

Co-authored-by: Reilly Wood <reilly.wood@icloud.com>
This commit is contained in:
Ryan Devenney 2023-02-12 21:24:48 -05:00 committed by GitHub
parent ccbdc9f6d8
commit 072d2a919d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -135,7 +135,7 @@ impl Command for Cd {
} }
// if canonicalize failed, let's check to see if it's abbreviated // if canonicalize failed, let's check to see if it's abbreviated
Err(e1) => { Err(_) => {
if use_abbrev { if use_abbrev {
match query(&path_no_whitespace, None, v.span) { match query(&path_no_whitespace, None, v.span) {
Ok(path) => path, Ok(path) => path,
@ -147,10 +147,7 @@ impl Command for Cd {
} }
} }
} else { } else {
return Err(ShellError::DirectoryNotFound( return Err(ShellError::DirectoryNotFound(v.span, None));
v.span,
Some(format!("IO Error: {e1:?}")),
));
} }
} }
}; };