Only allow unaliasing in current scope, add tests (#3936)

* unalias only removes aliases in the current scope

* Add a test and fix previous ones which did not function as expected
This commit is contained in:
Hristo Filaretov
2021-08-19 09:05:36 +02:00
committed by GitHub
parent ead4029d49
commit 6db5692be4
2 changed files with 31 additions and 10 deletions

View File

@ -1150,23 +1150,44 @@ fn unalias_shadowing() {
let actual = nu!(
cwd: ".", pipeline(
r#"
alias ll = ls -l
let xyz = { ll -a }
unalias ll
do $xyz
def test-shadowing [] {
alias greet = echo hello;
let xyz = { greet };
unalias greet;
do $xyz
};
test-shadowing
"#)
);
assert_eq!(actual.out, "hello");
}
assert_eq!(actual.out, "");
#[test]
fn unalias_does_not_escape_scope() {
let actual = nu!(
cwd: ".", pipeline(
r#"
def test-alias [] {
alias greet = echo hello;
(unalias greet);
greet
};
test-alias
"#)
);
assert_eq!(actual.out, "hello");
}
#[test]
fn unalias_hides_alias() {
let actual = nu!(cwd: ".", pipeline(
r#"alias ll = ls -l
ll
unalias ll
ll
r#"
def test-alias [] {
alias ll = ls -l;
unalias ll;
ll
};
test-alias
"#)
);