diff --git a/crates/nu-cli/src/commands/sort_by.rs b/crates/nu-cli/src/commands/sort_by.rs index bf273d115..c01c00376 100644 --- a/crates/nu-cli/src/commands/sort_by.rs +++ b/crates/nu-cli/src/commands/sort_by.rs @@ -1,4 +1,5 @@ use crate::commands::WholeStreamCommand; +use crate::data::base::coerce_compare; use crate::prelude::*; use nu_errors::ShellError; use nu_protocol::{Signature, SyntaxShape, UntaggedValue, Value}; @@ -112,7 +113,7 @@ pub fn sort( value: UntaggedValue::Primitive(_), .. } => { - vec.sort(); + vec.sort_by(|a, b| coerce_compare(a, b).expect("Unimplemented BUG: What about primitives that don't have an order defined?").compare()); } _ => { let calc_key = |item: &Value| { diff --git a/crates/nu-cli/tests/commands/math/median.rs b/crates/nu-cli/tests/commands/math/median.rs index 79f4da6d4..90070859c 100644 --- a/crates/nu-cli/tests/commands/math/median.rs +++ b/crates/nu-cli/tests/commands/math/median.rs @@ -27,3 +27,17 @@ fn median_numbers_with_odd_rows() { assert_eq!(actual.out, "10.5") } + +#[test] +fn median_mixed_numbers() { + let actual = nu!( + cwd: ".", pipeline( + r#" + echo [-11.5 -13.5 10] + | math median + | echo $it + "# + )); + + assert_eq!(actual.out, "-11.5") +}