Don't resolve symlinks in path add

This commit is contained in:
Tim Martin 2024-06-27 21:20:40 -05:00
parent c50f777c2b
commit cf903a5b56
No known key found for this signature in database
GPG Key ID: 19A52622B91D5DE3
2 changed files with 27 additions and 2 deletions

View File

@ -66,7 +66,7 @@ export def --env "path add" [
"record" => { $p | get --ignore-errors $nu.os-info.name },
}
$p | path expand
$p | path expand --no-symlink
}
if null in $paths or ($paths | is-empty) {
@ -80,7 +80,6 @@ export def --env "path add" [
$env
| get $path_name
| split row (char esep)
| path expand
| if $append { append $paths } else { prepend $paths }
)}

View File

@ -44,6 +44,32 @@ def path_add [] {
}
}
#[test]
def path_add_expand [] {
use std assert
# random paths to avoid collision, especially if left dangling on failure
let real_dir = $nu.temp-path | path join $"real-dir-(random chars)"
let link_dir = $nu.temp-path | path join $"link-dir-(random chars)"
mkdir $real_dir
let path_name = if $nu.os-info.family == 'windows' {
mklink /D $link_dir $real_dir
"Path"
} else {
ln -s $real_dir $link_dir | ignore
"PATH"
}
with-env {$path_name: []} {
def get_path [] { $env | get $path_name }
std path add $link_dir
assert equal (get_path) ([$link_dir])
}
rm $real_dir $link_dir
}
#[test]
def banner [] {
std assert ((std banner | lines | length) == 15)