forked from extern/nushell
504eff73f0
requires - https://github.com/nushell/nushell/pull/9455 # ⚙️ Description in this PR i move the commands we've all agreed, in the core team, to move out of the core Nushell to the `extra` feature. > **Warning** > in the first commits here, i've > - moved the implementations to `nu-cmd-extra` > - removed the declaration of all the commands below from `nu-command` > - made sure the commands were not available anymore with `cargo run -- -n` ## the list of commands to move with the current command table downloaded as `commands.csv`, i've run ```bash let commands = ( open commands.csv | where is_plugin == "FALSE" and category != "deprecated" | select name category "approv. %" | rename name category approval | insert treated {|it| ( ($it.approval == 100) or # all the core team agreed on them ($it.name | str starts-with "bits") or # see https://github.com/nushell/nushell/pull/9241 ($it.name | str starts-with "dfr") # see https://github.com/nushell/nushell/pull/9327 )} ) ``` to preprocess them and then ```bash $commands | where {|it| (not $it.treated) and ($it.approval == 0)} ``` to get all untreated commands with no approval, which gives ``` ╭────┬───────────────┬─────────┬─────────────┬──────────╮ │ # │ name │ treated │ category │ approval │ ├────┼───────────────┼─────────┼─────────────┼──────────┤ │ 0 │ fmt │ false │ conversions │ 0 │ │ 1 │ each while │ false │ filters │ 0 │ │ 2 │ roll │ false │ filters │ 0 │ │ 3 │ roll down │ false │ filters │ 0 │ │ 4 │ roll left │ false │ filters │ 0 │ │ 5 │ roll right │ false │ filters │ 0 │ │ 6 │ roll up │ false │ filters │ 0 │ │ 7 │ rotate │ false │ filters │ 0 │ │ 8 │ update cells │ false │ filters │ 0 │ │ 9 │ decode hex │ false │ formats │ 0 │ │ 10 │ encode hex │ false │ formats │ 0 │ │ 11 │ from url │ false │ formats │ 0 │ │ 12 │ to html │ false │ formats │ 0 │ │ 13 │ ansi gradient │ false │ platform │ 0 │ │ 14 │ ansi link │ false │ platform │ 0 │ │ 15 │ format │ false │ strings │ 0 │ ╰────┴───────────────┴─────────┴─────────────┴──────────╯ ``` # 🖌️ User-Facing Changes ``` $nothing ``` # 🧪 Tests + Formatting - ⚫ `toolkit fmt` - ⚫ `toolkit clippy` - ⚫ `toolkit test` - ⚫ `toolkit test stdlib` # 📖 After Submitting ``` $nothing ``` # 🔍 For reviewers ```bash $commands | where {|it| (not $it.treated) and ($it.approval == 0)} | each {|command| try { help $command.name | ignore } catch {|e| $"($command.name): ($e.msg)" } } ``` should give no output in `cargo run --features extra -- -n` and a table with 16 lines in `cargo run -- -n`
77 lines
1.8 KiB
Rust
77 lines
1.8 KiB
Rust
use nu_test_support::nu;
|
|
|
|
#[test]
|
|
fn each_works_separately() {
|
|
let actual = nu!("echo [1 2 3] | each { |it| echo $it 10 | math sum } | to json -r");
|
|
|
|
assert_eq!(actual.out, "[11,12,13]");
|
|
}
|
|
|
|
#[test]
|
|
fn each_group_works() {
|
|
let actual = nu!("echo [1 2 3 4 5 6] | group 3 | to json --raw");
|
|
|
|
assert_eq!(actual.out, "[[1,2,3],[4,5,6]]");
|
|
}
|
|
|
|
#[test]
|
|
fn each_window() {
|
|
let actual = nu!("echo [1 2 3 4] | window 3 | to json --raw");
|
|
|
|
assert_eq!(actual.out, "[[1,2,3],[2,3,4]]");
|
|
}
|
|
|
|
#[test]
|
|
fn each_window_stride() {
|
|
let actual = nu!("echo [1 2 3 4 5 6] | window 3 -s 2 | to json --raw");
|
|
|
|
assert_eq!(actual.out, "[[1,2,3],[3,4,5]]");
|
|
}
|
|
|
|
#[test]
|
|
fn each_no_args_in_block() {
|
|
let actual = nu!("echo [[foo bar]; [a b] [c d] [e f]] | each {|i| $i | to json -r } | get 1");
|
|
|
|
assert_eq!(actual.out, r#"{"foo": "c","bar": "d"}"#);
|
|
}
|
|
|
|
#[test]
|
|
fn each_implicit_it_in_block() {
|
|
let actual = nu!(
|
|
"echo [[foo bar]; [a b] [c d] [e f]] | each { |it| nu --testbin cococo $it.foo } | str join"
|
|
);
|
|
|
|
assert_eq!(actual.out, "ace");
|
|
}
|
|
|
|
#[test]
|
|
fn each_uses_enumerate_index() {
|
|
let actual = nu!("[7 8 9 10] | enumerate | each {|el| $el.index } | to nuon");
|
|
|
|
assert_eq!(actual.out, "[0, 1, 2, 3]");
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(feature = "extra")]
|
|
fn each_while_uses_enumerate_index() {
|
|
let actual = nu!("[7 8 9 10] | enumerate | each while {|el| $el.index } | to nuon");
|
|
|
|
assert_eq!(actual.out, "[0, 1, 2, 3]");
|
|
}
|
|
|
|
#[test]
|
|
fn each_element_continue_command() {
|
|
let actual =
|
|
nu!("[1,2,3,4,6,7] | each { |x| if ($x mod 2 == 0) {continue} else { $x }} | to nuon");
|
|
|
|
assert_eq!(actual.out, "[1, 3, 7]");
|
|
}
|
|
|
|
#[test]
|
|
fn each_element_break_command() {
|
|
let actual =
|
|
nu!("[1,2,5,4,6,7] | each { |x| if ($x mod 3 == 0) {break} else { $x }} | to nuon");
|
|
|
|
assert_eq!(actual.out, "[1, 2, 5, 4]");
|
|
}
|