forked from extern/nushell
Merge pull request #913 from andrasio/tests-builtins
`get` preserves anchored inputs.
This commit is contained in:
commit
1b784cb77a
@ -97,7 +97,7 @@ pub fn get_column_path(
|
|||||||
|
|
||||||
let res = match value {
|
let res = match value {
|
||||||
Ok(fetched) => match fetched {
|
Ok(fetched) => match fetched {
|
||||||
Some(Tagged { item: v, tag }) => Ok((v.clone()).tagged(&tag)),
|
Some(Tagged { item: v, .. }) => Ok((v.clone()).tagged(&obj.tag)),
|
||||||
None => match obj {
|
None => match obj {
|
||||||
// If its None check for certain values.
|
// If its None check for certain values.
|
||||||
Tagged {
|
Tagged {
|
||||||
@ -147,8 +147,14 @@ pub fn get(
|
|||||||
item: Value::Table(rows),
|
item: Value::Table(rows),
|
||||||
..
|
..
|
||||||
} => {
|
} => {
|
||||||
for item in rows {
|
for row in rows {
|
||||||
result.push_back(ReturnSuccess::value(item.clone()));
|
result.push_back(ReturnSuccess::value(
|
||||||
|
Tagged {
|
||||||
|
item: row.item,
|
||||||
|
tag: Tag::from(&item.tag),
|
||||||
|
}
|
||||||
|
.map_anchored(&item.tag.anchor),
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
other => result
|
other => result
|
||||||
|
@ -105,6 +105,17 @@ impl<T> Tagged<T> {
|
|||||||
mapped.tagged(tag)
|
mapped.tagged(tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn map_anchored(self, anchor: &Option<AnchorLocation>) -> Tagged<T> {
|
||||||
|
let mut tag = self.tag;
|
||||||
|
|
||||||
|
tag.anchor = anchor.clone();
|
||||||
|
|
||||||
|
Tagged {
|
||||||
|
item: self.item,
|
||||||
|
tag: tag,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn tag(&self) -> Tag {
|
pub fn tag(&self) -> Tag {
|
||||||
self.tag.clone()
|
self.tag.clone()
|
||||||
}
|
}
|
||||||
@ -418,16 +429,6 @@ impl Span {
|
|||||||
self.slice(source).to_string().spanned(*self)
|
self.slice(source).to_string().spanned(*self)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
pub fn unknown_with_uuid(uuid: Uuid) -> Span {
|
|
||||||
Span {
|
|
||||||
start: 0,
|
|
||||||
end: 0,
|
|
||||||
source: Some(uuid),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
pub fn start(&self) -> usize {
|
pub fn start(&self) -> usize {
|
||||||
self.start
|
self.start
|
||||||
}
|
}
|
||||||
|
@ -166,80 +166,6 @@ fn last_gets_last_row_when_no_amount_given() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn get() {
|
|
||||||
Playground::setup("get_test_1", |dirs, sandbox| {
|
|
||||||
sandbox.with_files(vec![FileWithContent(
|
|
||||||
"sample.toml",
|
|
||||||
r#"
|
|
||||||
nu_party_venue = "zion"
|
|
||||||
"#,
|
|
||||||
)]);
|
|
||||||
|
|
||||||
let actual = nu!(
|
|
||||||
cwd: dirs.test(), h::pipeline(
|
|
||||||
r#"
|
|
||||||
open sample.toml
|
|
||||||
| get nu_party_venue
|
|
||||||
| echo $it
|
|
||||||
"#
|
|
||||||
));
|
|
||||||
|
|
||||||
assert_eq!(actual, "zion");
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn get_more_than_one_member() {
|
|
||||||
Playground::setup("get_test_2", |dirs, sandbox| {
|
|
||||||
sandbox.with_files(vec![FileWithContent(
|
|
||||||
"sample.toml",
|
|
||||||
r#"
|
|
||||||
[[fortune_tellers]]
|
|
||||||
name = "Andrés N. Robalino"
|
|
||||||
arepas = 1
|
|
||||||
broken_builds = 0
|
|
||||||
|
|
||||||
[[fortune_tellers]]
|
|
||||||
name = "Jonathan Turner"
|
|
||||||
arepas = 1
|
|
||||||
broken_builds = 1
|
|
||||||
|
|
||||||
[[fortune_tellers]]
|
|
||||||
name = "Yehuda Katz"
|
|
||||||
arepas = 1
|
|
||||||
broken_builds = 1
|
|
||||||
"#,
|
|
||||||
)]);
|
|
||||||
|
|
||||||
let actual = nu!(
|
|
||||||
cwd: dirs.test(), h::pipeline(
|
|
||||||
r#"
|
|
||||||
open sample.toml
|
|
||||||
| get fortune_tellers
|
|
||||||
| get arepas broken_builds
|
|
||||||
| sum
|
|
||||||
| echo $it
|
|
||||||
"#
|
|
||||||
));
|
|
||||||
|
|
||||||
assert_eq!(actual, "5");
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn get_requires_at_least_one_member() {
|
|
||||||
Playground::setup("first_test_3", |dirs, sandbox| {
|
|
||||||
sandbox.with_files(vec![EmptyFile("andres.txt")]);
|
|
||||||
|
|
||||||
let actual = nu_error!(
|
|
||||||
cwd: dirs.test(), "ls | get"
|
|
||||||
);
|
|
||||||
|
|
||||||
assert!(actual.contains("requires member parameter"));
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn lines() {
|
fn lines() {
|
||||||
let actual = nu!(
|
let actual = nu!(
|
||||||
|
Loading…
Reference in New Issue
Block a user