diff --git a/src/commands/get.rs b/src/commands/get.rs index cda637495e..0176b215dc 100644 --- a/src/commands/get.rs +++ b/src/commands/get.rs @@ -97,7 +97,7 @@ pub fn get_column_path( let res = match value { 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 { // If its None check for certain values. Tagged { @@ -147,8 +147,14 @@ pub fn get( item: Value::Table(rows), .. } => { - for item in rows { - result.push_back(ReturnSuccess::value(item.clone())); + for row in rows { + result.push_back(ReturnSuccess::value( + Tagged { + item: row.item, + tag: Tag::from(&item.tag), + } + .map_anchored(&item.tag.anchor), + )) } } other => result diff --git a/src/data/meta.rs b/src/data/meta.rs index 2017558cd2..6c9294c573 100644 --- a/src/data/meta.rs +++ b/src/data/meta.rs @@ -105,6 +105,17 @@ impl Tagged { mapped.tagged(tag) } + pub fn map_anchored(self, anchor: &Option) -> Tagged { + let mut tag = self.tag; + + tag.anchor = anchor.clone(); + + Tagged { + item: self.item, + tag: tag, + } + } + pub fn tag(&self) -> Tag { self.tag.clone() } @@ -418,16 +429,6 @@ impl Span { 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 { self.start } diff --git a/tests/commands_test.rs b/tests/commands_test.rs index 87e1182b10..1c456b52c7 100644 --- a/tests/commands_test.rs +++ b/tests/commands_test.rs @@ -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] fn lines() { let actual = nu!(