nushell/crates/nu-command/tests/commands/table.rs

2388 lines
304 KiB
Rust
Raw Normal View History

use nu_test_support::fs::Stub::FileWithContent;
use nu_test_support::playground::Playground;
use nu_test_support::{nu, nu_repl_code, pipeline};
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
#[test]
fn table_0() {
let actual = nu!(r#"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table"#);
assert_eq!(
actual.out,
"╭───┬───┬───┬────────────────╮\
# a b c \
\
0 1 2 3 \
1 4 5 [list 3 items] \
"
);
}
#[test]
fn table_collapse_0() {
let actual = nu!(r#"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"#);
assert_eq!(
actual.out,
"╭───┬───┬───╮\
a b c \
\
1 2 3 \
\
4 5 1 \
\
2 \
\
3 \
"
);
}
#[test]
fn table_collapse_basic() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: basic }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
"+---+---+---+\
| a | b | c |\
+---+---+---+\
| 1 | 2 | 3 |\
+---+---+---+\
| 4 | 5 | 1 |\
| | +---+\
| | | 2 |\
| | +---+\
| | | 3 |\
+---+---+---+"
);
}
#[test]
fn table_collapse_heavy() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: heavy }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
"┏━━━┳━━━┳━━━┓\
a b c \
\
1 2 3 \
\
4 5 1 \
\
2 \
\
3 \
"
);
}
#[test]
fn table_collapse_compact() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: compact }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
"┌───┬───┬───┐\
a b c \
\
1 2 3 \
\
4 5 1 \
\
2 \
\
3 \
"
);
}
#[test]
fn table_collapse_compact_double() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: compact_double }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
"╔═══╦═══╦═══╗\
a b c \
\
1 2 3 \
\
4 5 1 \
\
2 \
\
3 \
"
);
}
#[test]
fn table_collapse_compact_light() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: light }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
"┌───┬───┬───┐\
a b c \
\
1 2 3 \
\
4 5 1 \
\
2 \
\
3 \
"
);
}
#[test]
fn table_collapse_none() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: none }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
concat!(
" a b c ",
" 1 2 3 ",
" 4 5 1 ",
" 2 ",
" 3 ",
)
);
}
#[test]
fn table_collapse_compact_reinforced() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: reinforced }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
"┏───┬───┬───┓\
a b c \
\
1 2 3 \
\
4 5 1 \
\
2 \
\
3 \
"
);
}
#[test]
fn table_collapse_compact_thin() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: thin }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
"┌───┬───┬───┐\
a b c \
\
1 2 3 \
\
4 5 1 \
\
2 \
\
3 \
"
);
}
#[test]
fn table_collapse_hearts() {
let actual = nu!(nu_repl_code(&[
remove let-env, focus on mutating $env (#9574) # Description For years, Nushell has used `let-env` to set a single environment variable. As our work on scoping continued, we refined what it meant for a variable to be in scope using `let` but never updated how `let-env` would work. Instead, `let-env` confusingly created mutations to the command's copy of `$env`. So, to help fix the mental model and point people to the right way of thinking about what changing the environment means, this PR removes `let-env` to encourage people to think of it as updating the command's environment variable via mutation. Before: ``` let-env FOO = "BAR" ``` Now: ``` $env.FOO = "BAR" ``` It's also a good reminder that the environment owned by the command is in the `$env` variable rather than global like it is in other shells. # User-Facing Changes BREAKING CHANGE BREAKING CHANGE This completely removes `let-env FOO = "BAR"` so that we can focus on `$env.FOO = "BAR"`. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After / Before Submitting integration scripts to update: - :heavy_check_mark: [starship](https://github.com/starship/starship/blob/master/src/init/starship.nu) - :heavy_check_mark: [virtualenv](https://github.com/pypa/virtualenv/blob/main/src/virtualenv/activation/nushell/activate.nu) - :heavy_check_mark: [atuin](https://github.com/ellie/atuin/blob/main/atuin/src/shell/atuin.nu) (PR: https://github.com/ellie/atuin/pull/1080) - :x: [zoxide](https://github.com/ajeetdsouza/zoxide/blob/main/templates/nushell.txt) (PR: https://github.com/ajeetdsouza/zoxide/pull/587) - :heavy_check_mark: [oh-my-posh](https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/shell/scripts/omp.nu) (pr: https://github.com/JanDeDobbeleer/oh-my-posh/pull/4011)
2023-06-30 21:57:51 +02:00
"$env.config = { table: { mode: with_love }};",
"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --collapse"
]));
assert_eq!(
actual.out,
concat!(
"❤❤❤❤❤❤❤❤❤❤❤❤❤",
"❤ a ❤ b ❤ c ❤",
"❤❤❤❤❤❤❤❤❤❤❤❤❤",
"❤ 1 ❤ 2 ❤ 3 ❤",
"❤❤❤❤❤❤❤❤❤❤❤❤❤",
"❤ 4 ❤ 5 ❤ 1 ❤",
"❤ ❤ ❤❤❤❤❤",
"❤ ❤ ❤ 2 ❤",
"❤ ❤ ❤❤❤❤❤",
"❤ ❤ ❤ 3 ❤",
"❤❤❤❤❤❤❤❤❤❤❤❤❤",
)
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
);
}
#[test]
fn table_collapse_does_wrapping_for_long_strings() {
let actual = nu!(
r#"[[a]; [11111111111111111111111111111111111111111111111111111111111111111111111111111111]] | table --collapse"#
);
assert_eq!(
actual.out,
"╭────────────────────────────────╮\
a \
\
111111111111111109312339230430 \
179149313814687359833671239329 \
01313323321729744896.0000 \
"
);
}
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
#[test]
fn table_expand_0() {
let actual = nu!(r#"[[a b, c]; [1 2 3] [4 5 [1 2 3]]] | table --expand"#);
assert_eq!(
actual.out,
"╭───┬───┬───┬───────────╮\
# a b c \
\
0 1 2 3 \
1 4 5 \
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
0 1 \
1 2 \
2 3 \
\
"
);
}
// I am not sure whether the test is platform dependent, cause we don't set a term_width on our own
#[test]
fn table_expand_exceed_overlap_0() {
// no expand
let actual = nu!(r#"[[a b, c]; [xxxxxxxxxxxxxxxxxxxxxx 2 3] [4 5 [1 2 3]]] | table --expand"#);
assert_eq!(
actual.out,
"╭───┬────────────────────────┬───┬───────────╮\
# a b c \
\
0 xxxxxxxxxxxxxxxxxxxxxx 2 3 \
1 4 5 \
0 1 \
1 2 \
2 3 \
\
",
);
// expand
let actual = nu!(
r#"[[a b, c]; [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2 3] [4 5 [1 2 3]]] | table --expand"#
);
assert_eq!(
actual.out,
"╭──────┬───────────────────────────────────────────────────┬─────┬─────────────╮\
# a b c \
\
0 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2 3 \
1 4 5 \
0 1 \
1 2 \
2 3 \
\
"
);
}
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
#[test]
fn table_expand_deep_0() {
let actual = nu!(r#"[[a b, c]; [1 2 3] [4 5 [1 2 [1 2 3]]]] | table --expand --expand-deep=1"#);
assert_eq!(
actual.out,
"╭───┬───┬───┬────────────────────────╮\
# a b c \
\
0 1 2 3 \
1 4 5 \
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
0 1 \
1 2 \
2 [list 3 items] \
\
"
);
}
#[test]
fn table_expand_deep_1() {
let actual = nu!(r#"[[a b, c]; [1 2 3] [4 5 [1 2 [1 2 3]]]] | table --expand --expand-deep=0"#);
assert_eq!(
actual.out,
"╭───┬───┬───┬────────────────╮\
# a b c \
\
0 1 2 3 \
1 4 5 [list 3 items] \
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
"
);
}
#[test]
fn table_expand_flatten_0() {
let actual = nu!(r#"[[a b, c]; [1 2 3] [4 5 [1 2 [1 1 1]]]] | table --expand --flatten "#);
assert_eq!(
actual.out,
"╭───┬───┬───┬───────────────╮\
# a b c \
\
0 1 2 3 \
1 4 5 \
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
0 1 \
1 2 \
2 1 1 1 \
\
"
);
}
#[test]
fn table_expand_flatten_1() {
let actual = nu!(
r#"[[a b, c]; [1 2 3] [4 5 [1 2 [1 1 1]]]] | table --expand --flatten --flatten-separator=,"#
);
assert_eq!(
actual.out,
"╭───┬───┬───┬───────────────╮\
# a b c \
\
0 1 2 3 \
1 4 5 \
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
0 1 \
1 2 \
2 1,1,1 \
\
"
);
}
#[test]
fn table_expand_flatten_and_deep_1() {
let actual = nu!(
r#"[[a b, c]; [1 2 3] [4 5 [1 2 [1 [1 1 1] 1]]]] | table --expand --expand-deep=2 --flatten --flatten-separator=,"#
);
assert_eq!(
actual.out,
"╭───┬───┬───┬────────────────────────────────╮\
# a b c \
\
0 1 2 3 \
1 4 5 \
WIP/ Checkout to new `tabled` (#6286) * nu-table/ Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Fix first column alignment Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix color issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Fix footer row Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table/ Update * Use latest tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add optional -e, -c argument to `table` command for different view Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Update Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix cargo clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * nu-table: Add footer into -e/c mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Publish new expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add width ctrl for Expand mode Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Refactorings Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Merge with main Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix clippy Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Fix tests Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Bump tabled Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * Add record expand and fix empty list issue Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com> * refactoring Signed-off-by: Maxim Zhiburt <zhiburt@gmail.com>
2022-10-03 18:40:16 +02:00
0 1 \
1 2 \
2 \
0 1 \
1 [list 3 items] \
2 1 \
\
\
"
);
}
#[test]
fn table_expand_record_0() {
let actual = nu!(r#"[{c: {d: 1}}] | table --expand"#);
assert_eq!(
actual.out,
"╭───┬───────────╮\
# c \
\
0 \
d 1 \
\
"
);
}
#[test]
fn table_expand_record_1() {
let actual =
nu!(r#"[[a b, c]; [1 2 3] [4 5 [1 2 {a: 123, b: 234, c: 345}]]] | table --expand"#);
assert_eq!(
actual.out,
"╭───┬───┬───┬─────────────────────╮\
# a b c \
\
0 1 2 3 \
1 4 5 \
0 1 \
1 2 \
2 \
a 123 \
b 234 \
c 345 \
\
\
"
);
}
#[test]
fn table_expand_record_2() {
let structure = "{\
field1: [ a, b, c ],\
field2: [ 123, 234, 345 ],\
field3: [ [ head1, head2, head3 ]; [ 1 2 3 ] [ 79 79 79 ] [ { f1: 'a string', f2: 1000 }, 1, 2 ] ],\
field4: { f1: 1, f2: 3, f3: { f1: f1, f2: f2, f3: f3 } }\
}";
let actual = nu!(format!("{structure} | table --expand"));
assert_eq!(
actual.out,
"╭────────┬───────────────────────────────────────────╮\
\
field1 0 a \
1 b \
2 c \
\
\
field2 0 123 \
1 234 \
2 345 \
\
\
field3 # head1 head2 head3 \
\
0 1 2 3 \
1 79 79 79 \
2 1 2 \
f1 a string \
f2 1000 \
\
\
\
field4 f1 1 \
f2 3 \
\
f3 f1 f1 \
f2 f2 \
f3 f3 \
\
\
"
);
}
#[test]
#[cfg(not(windows))]
fn external_with_too_much_stdout_should_not_hang_nu() {
use nu_test_support::fs::Stub::FileWithContent;
use nu_test_support::pipeline;
use nu_test_support::playground::Playground;
Playground::setup("external with too much stdout", |dirs, sandbox| {
let bytes: usize = 81920;
let mut large_file_body = String::with_capacity(bytes);
for _ in 0..bytes {
2022-10-18 20:13:36 +02:00
large_file_body.push('a');
}
sandbox.with_files(vec![FileWithContent("a_large_file.txt", &large_file_body)]);
let actual = nu!(
cwd: dirs.test(), pipeline(
r#"
cat a_large_file.txt | table
"#
));
assert_eq!(actual.out, large_file_body);
})
}
#[test]
fn table_pagging_row_offset_overlap() {
let actual = nu!(r#"0..1000"#);
assert_eq!(actual.out, "╭─────┬─────╮│ 0 │ 0 ││ 1 │ 1 ││ 2 │ 2 ││ 3 │ 3 ││ 4 │ 4 ││ 5 │ 5 ││ 6 │ 6 ││ 7 │ 7 ││ 8 │ 8 ││ 9 │ 9 ││ 10 │ 10 ││ 11 │ 11 ││ 12 │ 12 ││ 13 │ 13 ││ 14 │ 14 ││ 15 │ 15 ││ 16 │ 16 ││ 17 │ 17 ││ 18 │ 18 ││ 19 │ 19 ││ 20 │ 20 ││ 21 │ 21 ││ 22 │ 22 ││ 23 │ 23 ││ 24 │ 24 ││ 25 │ 25 ││ 26 │ 26 ││ 27 │ 27 ││ 28 │ 28 ││ 29 │ 29 ││ 30 │ 30 ││ 31 │ 31 ││ 32 │ 32 ││ 33 │ 33 ││ 34 │ 34 ││ 35 │ 35 ││ 36 │ 36 ││ 37 │ 37 ││ 38 │ 38 ││ 39 │ 39 ││ 40 │ 40 ││ 41 │ 41 ││ 42 │ 42 ││ 43 │ 43 ││ 44 │ 44 ││ 45 │ 45 ││ 46 │ 46 ││ 47 │ 47 ││ 48 │ 48 ││ 49 │ 49 ││ 50 │ 50 ││ 51 │ 51 ││ 52 │ 52 ││ 53 │ 53 ││ 54 │ 54 ││ 55 │ 55 ││ 56 │ 56 ││ 57 │ 57 ││ 58 │ 58 ││ 59 │ 59 ││ 60 │ 60 ││ 61 │ 61 ││ 62 │ 62 ││ 63 │ 63 ││ 64 │ 64 ││ 65 │ 65 ││ 66 │ 66 ││ 67 │ 67 ││ 68 │ 68 ││ 69 │ 69 ││ 70 │ 70 ││ 71 │ 71 ││ 72 │ 72 ││ 73 │ 73 ││ 74 │ 74 ││ 75 │ 75 ││ 76 │ 76 ││ 77 │ 77 ││ 78 │ 78 ││ 79 │ 79 ││ 80 │ 80 ││ 81 │ 81 ││ 82 │ 82 ││ 83 │ 83 ││ 84 │ 84 ││ 85 │ 85 ││ 86 │ 86 ││ 87 │ 87 ││ 88 │ 88 ││ 89 │ 89 ││ 90 │ 90 ││ 91 │ 91 ││ 92 │ 92 ││ 93 │ 93 ││ 94 │ 94 ││ 95 │ 95 ││ 96 │ 96 ││ 97 │ 97 ││ 98 │ 98 ││ 99 │ 99 ││ 100 │ 100 ││ 101 │ 101 ││ 102 │ 102 ││ 103 │ 103 ││ 104 │ 104 ││ 105 │ 105 ││ 106 │ 106 ││ 107 │ 107 ││ 108 │ 108 ││ 109 │ 109 ││ 110 │ 110 ││ 111 │ 111 ││ 112 │ 112 ││ 113 │ 113 ││ 114 │ 114 ││ 115 │ 115 ││ 116 │ 116 ││ 117 │ 117 ││ 118 │ 118 ││ 119 │ 119 ││ 120 │ 120 ││ 121 │ 121 ││ 122 │ 122 ││ 123 │ 123 ││ 124 │ 124 ││ 125 │ 125 ││ 126 │ 126 ││ 127 │ 127 ││ 128 │ 128 ││ 129 │ 129 ││ 130 │ 130 ││ 131 │ 131 ││ 132 │ 132 ││ 133 │ 133 ││ 134 │ 134 ││ 135 │ 135 ││ 136 │ 136 ││ 137 │ 137 ││ 138 │ 138 ││ 139 │ 139 ││ 140 │ 140 ││ 141 │ 141 ││ 142 │ 142 ││ 143 │ 143 ││ 144 │ 144 ││ 145 │ 145 ││ 146 │ 146 ││ 147 │ 147 ││ 148 │ 148 ││ 149 │ 149 ││ 150 │ 150 ││ 151 │ 151 ││ 152 │ 152 ││ 153 │ 153 ││ 154 │ 154 ││ 155 │ 155 ││ 156 │ 156 ││ 157 │ 157 ││ 158 │ 158 ││ 159 │ 159 ││ 160 │ 160 ││ 161 │ 161 ││ 162 │ 162 ││ 163 │ 163 ││ 164 │ 164 ││ 165 │ 165 ││ 166 │ 166 ││ 167 │ 167 ││ 168 │ 168 ││ 169 │ 169 ││ 170 │ 170 ││ 171 │ 171 ││ 172 │ 172 ││ 173 │ 173 ││ 174 │ 174 ││ 175 │ 175 ││ 176 │ 176 ││ 177 │ 177 ││ 178 │ 178 ││ 179 │ 179 ││ 180 │ 180 ││ 181 │ 181 ││ 182 │ 182 ││ 183 │ 183 ││ 184 │ 184 ││ 185 │ 185 ││ 186 │ 186 ││ 187 │ 187 ││ 188 │ 188 ││ 189 │ 189 ││ 190 │ 190 ││ 191 │ 191 ││ 192 │ 192 ││ 193 │ 193 ││ 194 │ 194 ││ 195 │ 195 ││ 196 │ 196 ││ 197 │ 197 ││ 198 │ 198 ││ 199 │ 199 ││ 200 │ 200 ││ 201 │ 201 ││ 202 │ 202 ││ 203 │ 203 ││ 204 │ 204 ││ 205 │ 205 ││ 206 │ 206 ││ 207 │ 207 ││ 208 │ 208 ││ 209 │ 209 ││ 210 │ 210 ││ 211 │ 211 │
}
#[test]
fn table_index_0() {
let actual = nu!(r#"[1 3 1 3 2 1 1]"#);
assert_eq!(
actual.out,
"╭───┬───╮│ 0 │ 1 ││ 1 │ 3 ││ 2 │ 1 ││ 3 │ 3 ││ 4 │ 2 ││ 5 │ 1 ││ 6 │ 1 │╰───┴───╯"
);
}
#[test]
fn test_expand_big_0() {
Playground::setup("test_expand_big_0", |dirs, sandbox| {
sandbox.with_files(vec![FileWithContent(
"sample.toml",
r#"
[package]
authors = ["The Nushell Project Developers"]
default-run = "nu"
description = "A new type of shell"
documentation = "https://www.nushell.sh/book/"
edition = "2021"
exclude = ["images"]
homepage = "https://www.nushell.sh"
license = "MIT"
name = "nu"
repository = "https://github.com/nushell/nushell"
rust-version = "1.60"
version = "0.74.1"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/{ version }/{ name }-{ version }-{ target }.{ archive-format }"
pkg-fmt = "tgz"
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-fmt = "zip"
[workspace]
members = [
"crates/nu-cli",
"crates/nu-engine",
"crates/nu-parser",
"crates/nu-system",
"crates/nu-command",
"crates/nu-protocol",
"crates/nu-plugin",
"crates/nu_plugin_inc",
"crates/nu_plugin_gstat",
"crates/nu_plugin_example",
"crates/nu_plugin_query",
"crates/nu_plugin_custom_values",
"crates/nu-utils",
]
[dependencies]
chrono = { version = "0.4.23", features = ["serde"] }
crossterm = "0.24.0"
ctrlc = "3.2.1"
log = "0.4"
miette = { version = "5.5.0", features = ["fancy-no-backtrace"] }
nu-ansi-term = "0.46.0"
nu-cli = { path = "./crates/nu-cli", version = "0.74.1" }
nu-engine = { path = "./crates/nu-engine", version = "0.74.1" }
reedline = { version = "0.14.0", features = ["bashisms", "sqlite"] }
rayon = "1.6.1"
is_executable = "1.0.1"
simplelog = "0.12.0"
time = "0.3.12"
[target.'cfg(not(target_os = "windows"))'.dependencies]
# Our dependencies don't use OpenSSL on Windows
openssl = { version = "0.10.38", features = ["vendored"], optional = true }
signal-hook = { version = "0.3.14", default-features = false }
[target.'cfg(windows)'.build-dependencies]
winres = "0.1"
[target.'cfg(target_family = "unix")'.dependencies]
nix = { version = "0.25", default-features = false, features = ["signal", "process", "fs", "term"] }
atty = "0.2"
[dev-dependencies]
nu-test-support = { path = "./crates/nu-test-support", version = "0.74.1" }
tempfile = "3.2.0"
assert_cmd = "2.0.2"
criterion = "0.4"
pretty_assertions = "1.0.0"
serial_test = "0.10.0"
hamcrest2 = "0.3.0"
rstest = { version = "0.15.0", default-features = false }
itertools = "0.10.3"
[features]
plugin = [
"nu-plugin",
"nu-cli/plugin",
"nu-parser/plugin",
"nu-command/plugin",
"nu-protocol/plugin",
"nu-engine/plugin",
]
# extra used to be more useful but now it's the same as default. Leaving it in for backcompat with existing build scripts
extra = ["default"]
default = ["plugin", "which-support", "trash-support", "sqlite"]
stable = ["default"]
wasi = []
# Enable to statically link OpenSSL; otherwise the system version will be used. Not enabled by default because it takes a while to build
static-link-openssl = ["dep:openssl"]
# Stable (Default)
which-support = ["nu-command/which-support"]
trash-support = ["nu-command/trash-support"]
# Main nu binary
[[bin]]
name = "nu"
path = "src/main.rs"
# To use a development version of a dependency please use a global override here
# changing versions in each sub-crate of the workspace is tedious
[patch.crates-io]
reedline = { git = "https://github.com/nushell/reedline.git", branch = "main" }
# Criterion benchmarking setup
# Run all benchmarks with `cargo bench`
# Run individual benchmarks like `cargo bench -- <regex>` e.g. `cargo bench -- parse`
[[bench]]
name = "benchmarks"
harness = false
"#,
)]);
let actual = nu!(
cwd: dirs.test(), pipeline(
"open sample.toml | table --expand"
));
let expected = join_lines([
"╭──────────────────┬───────────────────────────────────────────────────────────╮",
"│ │ ╭───┬─────────┬────────────╮ │",
"│ bench │ │ # │ harness │ name │ │",
"│ │ ├───┼─────────┼────────────┤ │",
"│ │ │ 0 │ false │ benchmarks │ │",
"│ │ ╰───┴─────────┴────────────╯ │",
"│ │ ╭───┬──────┬─────────────╮ │",
"│ bin │ │ # │ name │ path │ │",
"│ │ ├───┼──────┼─────────────┤ │",
"│ │ │ 0 │ nu │ src/main.rs │ │",
"│ │ ╰───┴──────┴─────────────╯ │",
"│ │ ╭───────────────┬───────────────────────────────────────╮ │",
"│ dependencies │ │ │ ╭──────────┬───────────────╮ │ │",
"│ │ │ chrono │ │ │ ╭───┬───────╮ │ │ │",
"│ │ │ │ │ features │ │ 0 │ serde │ │ │ │",
"│ │ │ │ │ │ ╰───┴───────╯ │ │ │",
"│ │ │ │ │ version │ 0.4.23 │ │ │",
"│ │ │ │ ╰──────────┴───────────────╯ │ │",
"│ │ │ crossterm │ 0.24.0 │ │",
"│ │ │ ctrlc │ 3.2.1 │ │",
"│ │ │ is_executable │ 1.0.1 │ │",
"│ │ │ log │ 0.4 │ │",
"│ │ │ │ ╭──────────┬────────────────────────╮ │ │",
"│ │ │ miette │ │ │ ╭───┬────────────────╮ │ │ │",
"│ │ │ │ │ features │ │ 0 │ fancy-no-backt │ │ │ │",
"│ │ │ │ │ │ │ │ race │ │ │ │",
"│ │ │ │ │ │ ╰───┴────────────────╯ │ │ │",
"│ │ │ │ │ version │ 5.5.0 │ │ │",
"│ │ │ │ ╰──────────┴────────────────────────╯ │ │",
"│ │ │ nu-ansi-term │ 0.46.0 │ │",
"│ │ │ │ ╭─────────┬─────────────────╮ │ │",
"│ │ │ nu-cli │ │ path │ ./crates/nu-cli │ │ │",
"│ │ │ │ │ version │ 0.74.1 │ │ │",
"│ │ │ │ ╰─────────┴─────────────────╯ │ │",
"│ │ │ │ ╭────────────┬──────────────────────╮ │ │",
"│ │ │ nu-engine │ │ path │ ./crates/nu-engine │ │ │",
"│ │ │ │ │ version │ 0.74.1 │ │ │",
"│ │ │ │ ╰────────────┴──────────────────────╯ │ │",
"│ │ │ rayon │ 1.6.1 │ │",
"│ │ │ │ ╭─────────────┬─────────────────────╮ │ │",
"│ │ │ reedline │ │ │ ╭───┬──────────╮ │ │ │",
"│ │ │ │ │ features │ │ 0 │ bashisms │ │ │ │",
"│ │ │ │ │ │ │ 1 │ sqlite │ │ │ │",
"│ │ │ │ │ │ ╰───┴──────────╯ │ │ │",
"│ │ │ │ │ version │ 0.14.0 │ │ │",
"│ │ │ │ ╰─────────────┴─────────────────────╯ │ │",
"│ │ │ simplelog │ 0.12.0 │ │",
"│ │ │ time │ 0.3.12 │ │",
"│ │ ╰───────────────┴───────────────────────────────────────╯ │",
"│ │ ╭───────────────────┬───────────────────────────────────╮ │",
"│ dev-dependencies │ │ assert_cmd │ 2.0.2 │ │",
"│ │ │ criterion │ 0.4 │ │",
"│ │ │ hamcrest2 │ 0.3.0 │ │",
"│ │ │ itertools │ 0.10.3 │ │",
"│ │ │ │ ╭─────────┬─────────────────────╮ │ │",
"│ │ │ nu-test-support │ │ path │ ./crates/nu-test-su │ │ │",
"│ │ │ │ │ │ pport │ │ │",
"│ │ │ │ │ version │ 0.74.1 │ │ │",
"│ │ │ │ ╰─────────┴─────────────────────╯ │ │",
"│ │ │ pretty_assertions │ 1.0.0 │ │",
"│ │ │ │ ╭────────────────────┬──────────╮ │ │",
"│ │ │ rstest │ │ default-features │ false │ │ │",
"│ │ │ │ │ version │ 0.15.0 │ │ │",
"│ │ │ │ ╰────────────────────┴──────────╯ │ │",
"│ │ │ serial_test │ 0.10.0 │ │",
"│ │ │ tempfile │ 3.2.0 │ │",
"│ │ ╰───────────────────┴───────────────────────────────────╯ │",
"│ │ ╭─────────────────────┬─────────────────────────────────╮ │",
"│ features │ │ │ ╭───┬───────────────╮ │ │",
"│ │ │ default │ │ 0 │ plugin │ │ │",
"│ │ │ │ │ 1 │ which-support │ │ │",
"│ │ │ │ │ 2 │ trash-support │ │ │",
"│ │ │ │ │ 3 │ sqlite │ │ │",
"│ │ │ │ ╰───┴───────────────╯ │ │",
"│ │ │ │ ╭───┬─────────╮ │ │",
"│ │ │ extra │ │ 0 │ default │ │ │",
"│ │ │ │ ╰───┴─────────╯ │ │",
"│ │ │ │ ╭───┬────────────────────╮ │ │",
"│ │ │ plugin │ │ 0 │ nu-plugin │ │ │",
"│ │ │ │ │ 1 │ nu-cli/plugin │ │ │",
"│ │ │ │ │ 2 │ nu-parser/plugin │ │ │",
"│ │ │ │ │ 3 │ nu-command/plugin │ │ │",
"│ │ │ │ │ 4 │ nu-protocol/plugin │ │ │",
"│ │ │ │ │ 5 │ nu-engine/plugin │ │ │",
"│ │ │ │ ╰───┴────────────────────╯ │ │",
"│ │ │ │ ╭───┬─────────╮ │ │",
"│ │ │ stable │ │ 0 │ default │ │ │",
"│ │ │ │ ╰───┴─────────╯ │ │",
"│ │ │ │ ╭───┬─────────────╮ │ │",
"│ │ │ static-link-openssl │ │ 0 │ dep:openssl │ │ │",
"│ │ │ │ ╰───┴─────────────╯ │ │",
"│ │ │ │ ╭───┬─────────────────────────╮ │ │",
"│ │ │ trash-support │ │ 0 │ nu-command/trash-suppor │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ ╰───┴─────────────────────────╯ │ │",
"│ │ │ wasi │ [list 0 items] │ │",
"│ │ │ │ ╭───┬─────────────────────────╮ │ │",
"│ │ │ which-support │ │ 0 │ nu-command/which-suppor │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ ╰───┴─────────────────────────╯ │ │",
"│ │ ╰─────────────────────┴─────────────────────────────────╯ │",
"│ │ ╭───────────────┬───────────────────────────────────────╮ │",
"│ package │ │ │ ╭───┬───────────────────────────────╮ │ │",
"│ │ │ authors │ │ 0 │ The Nushell Project │ │ │",
"│ │ │ │ │ │ Developers │ │ │",
"│ │ │ │ ╰───┴───────────────────────────────╯ │ │",
"│ │ │ default-run │ nu │ │",
"│ │ │ description │ A new type of shell │ │",
"│ │ │ documentation │ https://www.nushell.sh/book/ │ │",
"│ │ │ edition │ 2021 │ │",
"│ │ │ │ ╭───┬────────╮ │ │",
"│ │ │ exclude │ │ 0 │ images │ │ │",
"│ │ │ │ ╰───┴────────╯ │ │",
"│ │ │ homepage │ https://www.nushell.sh │ │",
"│ │ │ license │ MIT │ │",
"│ │ │ │ ╭──────────┬────────────────────────╮ │ │",
"│ │ │ metadata │ │ │ ╭───────────┬────────╮ │ │ │",
"│ │ │ │ │ binstall │ │ overrides │ {recor │ │ │ │",
"│ │ │ │ │ │ │ │ d 1 │ │ │ │",
"│ │ │ │ │ │ │ │ field} │ │ │ │",
"│ │ │ │ │ │ │ pkg-fmt │ tgz │ │ │ │",
"│ │ │ │ │ │ │ pkg-url │ { repo │ │ │ │",
"│ │ │ │ │ │ │ │ }/rel │ │ │ │",
"│ │ │ │ │ │ │ │ eases/ │ │ │ │",
"│ │ │ │ │ │ │ │ downlo │ │ │ │",
"│ │ │ │ │ │ │ │ ad/{ v │ │ │ │",
"│ │ │ │ │ │ │ │ ersion │ │ │ │",
"│ │ │ │ │ │ │ │ }/{ │ │ │ │",
"│ │ │ │ │ │ │ │ name │ │ │ │",
"│ │ │ │ │ │ │ │ }-{ ve │ │ │ │",
"│ │ │ │ │ │ │ │ rsion │ │ │ │",
"│ │ │ │ │ │ │ │ }-{ │ │ │ │",
"│ │ │ │ │ │ │ │ target │ │ │ │",
"│ │ │ │ │ │ │ │ }.{ a │ │ │ │",
"│ │ │ │ │ │ │ │ rchive │ │ │ │",
"│ │ │ │ │ │ │ │ -forma │ │ │ │",
"│ │ │ │ │ │ │ │ t } │ │ │ │",
"│ │ │ │ │ │ ╰───────────┴────────╯ │ │ │",
"│ │ │ │ ╰──────────┴────────────────────────╯ │ │",
"│ │ │ name │ nu │ │",
"│ │ │ repository │ https://github.com/nushell/nushell │ │",
"│ │ │ rust-version │ 1.60 │ │",
"│ │ │ version │ 0.74.1 │ │",
"│ │ ╰───────────────┴───────────────────────────────────────╯ │",
"│ │ ╭───────────┬───────────────────────────────────────────╮ │",
"│ patch │ │ │ ╭──────────┬────────────────────────────╮ │ │",
"│ │ │ crates-io │ │ │ ╭────────┬───────────────╮ │ │ │",
"│ │ │ │ │ reedline │ │ branch │ main │ │ │ │",
"│ │ │ │ │ │ │ git │ https://githu │ │ │ │",
"│ │ │ │ │ │ │ │ b.com/nushell │ │ │ │",
"│ │ │ │ │ │ │ │ /reedline.git │ │ │ │",
"│ │ │ │ │ │ ╰────────┴───────────────╯ │ │ │",
"│ │ │ │ ╰──────────┴────────────────────────────╯ │ │",
"│ │ ╰───────────┴───────────────────────────────────────────╯ │",
"│ │ ╭─────────────────────────────────┬─────────────────────╮ │",
"│ target │ │ │ ╭──────────────┬──╮ │ │",
"│ │ │ cfg(not(target_os = \"windows\")) │ │ dependencies │ │ │ │",
"│ │ │ │ ╰──────────────┴──╯ │ │",
"│ │ │ │ ╭──────────────┬──╮ │ │",
"│ │ │ cfg(target_family = \"unix\") │ │ dependencies │ │ │ │",
"│ │ │ │ ╰──────────────┴──╯ │ │",
"│ │ │ cfg(windows) │ {record 1 field} │ │",
"│ │ ╰─────────────────────────────────┴─────────────────────╯ │",
"│ │ ╭───────────┬───────────────────────────────────────────╮ │",
"│ workspace │ │ │ ╭────┬────────────────────────────────╮ │ │",
"│ │ │ members │ │ 0 │ crates/nu-cli │ │ │",
"│ │ │ │ │ 1 │ crates/nu-engine │ │ │",
"│ │ │ │ │ 2 │ crates/nu-parser │ │ │",
"│ │ │ │ │ 3 │ crates/nu-system │ │ │",
"│ │ │ │ │ 4 │ crates/nu-command │ │ │",
"│ │ │ │ │ 5 │ crates/nu-protocol │ │ │",
"│ │ │ │ │ 6 │ crates/nu-plugin │ │ │",
"│ │ │ │ │ 7 │ crates/nu_plugin_inc │ │ │",
"│ │ │ │ │ 8 │ crates/nu_plugin_gstat │ │ │",
"│ │ │ │ │ 9 │ crates/nu_plugin_example │ │ │",
"│ │ │ │ │ 10 │ crates/nu_plugin_query │ │ │",
"│ │ │ │ │ 11 │ crates/nu_plugin_custom_values │ │ │",
"│ │ │ │ │ 12 │ crates/nu-utils │ │ │",
"│ │ │ │ ╰────┴────────────────────────────────╯ │ │",
"│ │ ╰───────────┴───────────────────────────────────────────╯ │",
"╰──────────────────┴───────────────────────────────────────────────────────────╯",
]);
assert_eq!(actual.out, expected);
let actual = nu!(
cwd: dirs.test(), pipeline(
"open sample.toml | table --expand --width=120"
));
let expected = join_lines([
"╭──────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────╮",
"│ │ ╭───┬─────────┬────────────╮ │",
"│ bench │ │ # │ harness │ name │ │",
"│ │ ├───┼─────────┼────────────┤ │",
"│ │ │ 0 │ false │ benchmarks │ │",
"│ │ ╰───┴─────────┴────────────╯ │",
"│ │ ╭───┬──────┬─────────────╮ │",
"│ bin │ │ # │ name │ path │ │",
"│ │ ├───┼──────┼─────────────┤ │",
"│ │ │ 0 │ nu │ src/main.rs │ │",
"│ │ ╰───┴──────┴─────────────╯ │",
"│ │ ╭───────────────┬───────────────────────────────────────────╮ │",
"│ dependencies │ │ │ ╭──────────┬───────────────╮ │ │",
"│ │ │ chrono │ │ │ ╭───┬───────╮ │ │ │",
"│ │ │ │ │ features │ │ 0 │ serde │ │ │ │",
"│ │ │ │ │ │ ╰───┴───────╯ │ │ │",
"│ │ │ │ │ version │ 0.4.23 │ │ │",
"│ │ │ │ ╰──────────┴───────────────╯ │ │",
"│ │ │ crossterm │ 0.24.0 │ │",
"│ │ │ ctrlc │ 3.2.1 │ │",
"│ │ │ is_executable │ 1.0.1 │ │",
"│ │ │ log │ 0.4 │ │",
"│ │ │ │ ╭──────────┬────────────────────────────╮ │ │",
"│ │ │ miette │ │ │ ╭───┬────────────────────╮ │ │ │",
"│ │ │ │ │ features │ │ 0 │ fancy-no-backtrace │ │ │ │",
"│ │ │ │ │ │ ╰───┴────────────────────╯ │ │ │",
"│ │ │ │ │ version │ 5.5.0 │ │ │",
"│ │ │ │ ╰──────────┴────────────────────────────╯ │ │",
"│ │ │ nu-ansi-term │ 0.46.0 │ │",
"│ │ │ │ ╭─────────┬─────────────────╮ │ │",
"│ │ │ nu-cli │ │ path │ ./crates/nu-cli │ │ │",
"│ │ │ │ │ version │ 0.74.1 │ │ │",
"│ │ │ │ ╰─────────┴─────────────────╯ │ │",
"│ │ │ │ ╭─────────┬────────────────────╮ │ │",
"│ │ │ nu-engine │ │ path │ ./crates/nu-engine │ │ │",
"│ │ │ │ │ version │ 0.74.1 │ │ │",
"│ │ │ │ ╰─────────┴────────────────────╯ │ │",
"│ │ │ rayon │ 1.6.1 │ │",
"│ │ │ │ ╭──────────┬──────────────────╮ │ │",
"│ │ │ reedline │ │ │ ╭───┬──────────╮ │ │ │",
"│ │ │ │ │ features │ │ 0 │ bashisms │ │ │ │",
"│ │ │ │ │ │ │ 1 │ sqlite │ │ │ │",
"│ │ │ │ │ │ ╰───┴──────────╯ │ │ │",
"│ │ │ │ │ version │ 0.14.0 │ │ │",
"│ │ │ │ ╰──────────┴──────────────────╯ │ │",
"│ │ │ simplelog │ 0.12.0 │ │",
"│ │ │ time │ 0.3.12 │ │",
"│ │ ╰───────────────┴───────────────────────────────────────────╯ │",
"│ │ ╭───────────────────┬────────────────────────────────────────╮ │",
"│ dev-dependencies │ │ assert_cmd │ 2.0.2 │ │",
"│ │ │ criterion │ 0.4 │ │",
"│ │ │ hamcrest2 │ 0.3.0 │ │",
"│ │ │ itertools │ 0.10.3 │ │",
"│ │ │ │ ╭─────────┬──────────────────────────╮ │ │",
"│ │ │ nu-test-support │ │ path │ ./crates/nu-test-support │ │ │",
"│ │ │ │ │ version │ 0.74.1 │ │ │",
"│ │ │ │ ╰─────────┴──────────────────────────╯ │ │",
"│ │ │ pretty_assertions │ 1.0.0 │ │",
"│ │ │ │ ╭──────────────────┬────────╮ │ │",
"│ │ │ rstest │ │ default-features │ false │ │ │",
"│ │ │ │ │ version │ 0.15.0 │ │ │",
"│ │ │ │ ╰──────────────────┴────────╯ │ │",
"│ │ │ serial_test │ 0.10.0 │ │",
"│ │ │ tempfile │ 3.2.0 │ │",
"│ │ ╰───────────────────┴────────────────────────────────────────╯ │",
"│ │ ╭─────────────────────┬──────────────────────────────────╮ │",
"│ features │ │ │ ╭───┬───────────────╮ │ │",
"│ │ │ default │ │ 0 │ plugin │ │ │",
"│ │ │ │ │ 1 │ which-support │ │ │",
"│ │ │ │ │ 2 │ trash-support │ │ │",
"│ │ │ │ │ 3 │ sqlite │ │ │",
"│ │ │ │ ╰───┴───────────────╯ │ │",
"│ │ │ │ ╭───┬─────────╮ │ │",
"│ │ │ extra │ │ 0 │ default │ │ │",
"│ │ │ │ ╰───┴─────────╯ │ │",
"│ │ │ │ ╭───┬────────────────────╮ │ │",
"│ │ │ plugin │ │ 0 │ nu-plugin │ │ │",
"│ │ │ │ │ 1 │ nu-cli/plugin │ │ │",
"│ │ │ │ │ 2 │ nu-parser/plugin │ │ │",
"│ │ │ │ │ 3 │ nu-command/plugin │ │ │",
"│ │ │ │ │ 4 │ nu-protocol/plugin │ │ │",
"│ │ │ │ │ 5 │ nu-engine/plugin │ │ │",
"│ │ │ │ ╰───┴────────────────────╯ │ │",
"│ │ │ │ ╭───┬─────────╮ │ │",
"│ │ │ stable │ │ 0 │ default │ │ │",
"│ │ │ │ ╰───┴─────────╯ │ │",
"│ │ │ │ ╭───┬─────────────╮ │ │",
"│ │ │ static-link-openssl │ │ 0 │ dep:openssl │ │ │",
"│ │ │ │ ╰───┴─────────────╯ │ │",
"│ │ │ │ ╭───┬──────────────────────────╮ │ │",
"│ │ │ trash-support │ │ 0 │ nu-command/trash-support │ │ │",
"│ │ │ │ ╰───┴──────────────────────────╯ │ │",
"│ │ │ wasi │ [list 0 items] │ │",
"│ │ │ │ ╭───┬──────────────────────────╮ │ │",
"│ │ │ which-support │ │ 0 │ nu-command/which-support │ │ │",
"│ │ │ │ ╰───┴──────────────────────────╯ │ │",
"│ │ ╰─────────────────────┴──────────────────────────────────╯ │",
"│ │ ╭───────────────┬───────────────────────────────────────────────────────────────────────────────╮ │",
"│ package │ │ │ ╭───┬────────────────────────────────╮ │ │",
"│ │ │ authors │ │ 0 │ The Nushell Project Developers │ │ │",
"│ │ │ │ ╰───┴────────────────────────────────╯ │ │",
"│ │ │ default-run │ nu │ │",
"│ │ │ description │ A new type of shell │ │",
"│ │ │ documentation │ https://www.nushell.sh/book/ │ │",
"│ │ │ edition │ 2021 │ │",
"│ │ │ │ ╭───┬────────╮ │ │",
"│ │ │ exclude │ │ 0 │ images │ │ │",
"│ │ │ │ ╰───┴────────╯ │ │",
"│ │ │ homepage │ https://www.nushell.sh │ │",
"│ │ │ license │ MIT │ │",
"│ │ │ │ ╭──────────┬────────────────────────────────────────────────────────────────╮ │ │",
"│ │ │ metadata │ │ │ ╭───────────┬────────────────────────────────────────────────╮ │ │ │",
"│ │ │ │ │ binstall │ │ │ ╭────────────────────────┬───────────────────╮ │ │ │ │",
"│ │ │ │ │ │ │ overrides │ │ │ ╭─────────┬─────╮ │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ x86_64-pc-windows-msvc │ │ pkg-fmt │ zip │ │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ ╰─────────┴─────╯ │ │ │ │ │",
"│ │ │ │ │ │ │ │ ╰────────────────────────┴───────────────────╯ │ │ │ │",
"│ │ │ │ │ │ │ pkg-fmt │ tgz │ │ │ │",
"│ │ │ │ │ │ │ pkg-url │ { repo }/releases/download/{ version }/{ name │ │ │ │",
"│ │ │ │ │ │ │ │ }-{ version }-{ target }.{ archive-format } │ │ │ │",
"│ │ │ │ │ │ ╰───────────┴────────────────────────────────────────────────╯ │ │ │",
"│ │ │ │ ╰──────────┴────────────────────────────────────────────────────────────────╯ │ │",
"│ │ │ name │ nu │ │",
"│ │ │ repository │ https://github.com/nushell/nushell │ │",
"│ │ │ rust-version │ 1.60 │ │",
"│ │ │ version │ 0.74.1 │ │",
"│ │ ╰───────────────┴───────────────────────────────────────────────────────────────────────────────╯ │",
"│ │ ╭───────────┬───────────────────────────────────────────────────────────────────────────────────╮ │",
"│ patch │ │ │ ╭─────────────────┬─────────────────────────────────────────────────────────────╮ │ │",
"│ │ │ crates-io │ │ │ ╭────────┬─────────────────────────────────────────╮ │ │ │",
"│ │ │ │ │ reedline │ │ branch │ main │ │ │ │",
"│ │ │ │ │ │ │ git │ https://github.com/nushell/reedline.git │ │ │ │",
"│ │ │ │ │ │ ╰────────┴─────────────────────────────────────────╯ │ │ │",
"│ │ │ │ ╰─────────────────┴─────────────────────────────────────────────────────────────╯ │ │",
"│ │ ╰───────────┴───────────────────────────────────────────────────────────────────────────────────╯ │",
"│ │ ╭─────────────────────────────────┬─────────────────────────────────────────────────────────────╮ │",
"│ target │ │ │ ╭──────────────┬──────────────────────────────────────────╮ │ │",
"│ │ │ cfg(not(target_os = \"windows\")) │ │ │ ╭─────────────┬────────────────────────╮ │ │ │",
"│ │ │ │ │ dependencies │ │ │ ╭──────────┬─────────╮ │ │ │ │",
"│ │ │ │ │ │ │ openssl │ │ features │ [list 1 │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ item] │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ optional │ true │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ version │ 0.10.38 │ │ │ │ │",
"│ │ │ │ │ │ │ │ ╰──────────┴─────────╯ │ │ │ │",
"│ │ │ │ │ │ │ signal-hook │ {record 2 fields} │ │ │ │",
"│ │ │ │ │ │ ╰─────────────┴────────────────────────╯ │ │ │",
"│ │ │ │ ╰──────────────┴──────────────────────────────────────────╯ │ │",
"│ │ │ │ ╭──────────────┬──────────────────────────────────────────╮ │ │",
"│ │ │ cfg(target_family = \"unix\") │ │ │ ╭──────┬───────────────────────────────╮ │ │ │",
"│ │ │ │ │ dependencies │ │ atty │ 0.2 │ │ │ │",
"│ │ │ │ │ │ │ │ ╭──────────────────┬────────╮ │ │ │ │",
"│ │ │ │ │ │ │ nix │ │ default-features │ false │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ features │ [list │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 4 │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ items] │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ version │ 0.25 │ │ │ │ │",
"│ │ │ │ │ │ │ │ ╰──────────────────┴────────╯ │ │ │ │",
"│ │ │ │ │ │ ╰──────┴───────────────────────────────╯ │ │ │",
"│ │ │ │ ╰──────────────┴──────────────────────────────────────────╯ │ │",
"│ │ │ │ ╭────────────────────┬──────────────────╮ │ │",
"│ │ │ cfg(windows) │ │ │ ╭────────┬─────╮ │ │ │",
"│ │ │ │ │ build-dependencies │ │ winres │ 0.1 │ │ │ │",
"│ │ │ │ │ │ ╰────────┴─────╯ │ │ │",
"│ │ │ │ ╰────────────────────┴──────────────────╯ │ │",
"│ │ ╰─────────────────────────────────┴─────────────────────────────────────────────────────────────╯ │",
"│ │ ╭─────────┬─────────────────────────────────────────╮ │",
"│ workspace │ │ │ ╭────┬────────────────────────────────╮ │ │",
"│ │ │ members │ │ 0 │ crates/nu-cli │ │ │",
"│ │ │ │ │ 1 │ crates/nu-engine │ │ │",
"│ │ │ │ │ 2 │ crates/nu-parser │ │ │",
"│ │ │ │ │ 3 │ crates/nu-system │ │ │",
"│ │ │ │ │ 4 │ crates/nu-command │ │ │",
"│ │ │ │ │ 5 │ crates/nu-protocol │ │ │",
"│ │ │ │ │ 6 │ crates/nu-plugin │ │ │",
"│ │ │ │ │ 7 │ crates/nu_plugin_inc │ │ │",
"│ │ │ │ │ 8 │ crates/nu_plugin_gstat │ │ │",
"│ │ │ │ │ 9 │ crates/nu_plugin_example │ │ │",
"│ │ │ │ │ 10 │ crates/nu_plugin_query │ │ │",
"│ │ │ │ │ 11 │ crates/nu_plugin_custom_values │ │ │",
"│ │ │ │ │ 12 │ crates/nu-utils │ │ │",
"│ │ │ │ ╰────┴────────────────────────────────╯ │ │",
"│ │ ╰─────────┴─────────────────────────────────────────╯ │",
"╰──────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────╯",
]);
assert_eq!(actual.out, expected);
let actual = nu!(
cwd: dirs.test(), pipeline(
"open sample.toml | table --expand --width=60"
));
_print_lines(&actual.out, 60);
let expected = join_lines([
"╭──────────────────┬───────────────────────────────────────╮",
"│ │ ╭───┬─────────┬────────────╮ │",
"│ bench │ │ # │ harness │ name │ │",
"│ │ ├───┼─────────┼────────────┤ │",
"│ │ │ 0 │ false │ benchmarks │ │",
"│ │ ╰───┴─────────┴────────────╯ │",
"│ │ ╭───┬──────┬─────────────╮ │",
"│ bin │ │ # │ name │ path │ │",
"│ │ ├───┼──────┼─────────────┤ │",
"│ │ │ 0 │ nu │ src/main.rs │ │",
"│ │ ╰───┴──────┴─────────────╯ │",
"│ │ ╭───────────────┬───────────────────╮ │",
"│ dependencies │ │ │ ╭──────────┬────╮ │ │",
"│ │ │ chrono │ │ features │ [l │ │ │",
"│ │ │ │ │ │ is │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ │ │ 1 │ │ │",
"│ │ │ │ │ │ it │ │ │",
"│ │ │ │ │ │ em │ │ │",
"│ │ │ │ │ │ ] │ │ │",
"│ │ │ │ │ version │ 0. │ │ │",
"│ │ │ │ │ │ 4. │ │ │",
"│ │ │ │ │ │ 23 │ │ │",
"│ │ │ │ ╰──────────┴────╯ │ │",
"│ │ │ crossterm │ 0.24.0 │ │",
"│ │ │ ctrlc │ 3.2.1 │ │",
"│ │ │ is_executable │ 1.0.1 │ │",
"│ │ │ log │ 0.4 │ │",
"│ │ │ │ ╭──────────┬────╮ │ │",
"│ │ │ miette │ │ features │ [l │ │ │",
"│ │ │ │ │ │ is │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ │ │ 1 │ │ │",
"│ │ │ │ │ │ it │ │ │",
"│ │ │ │ │ │ em │ │ │",
"│ │ │ │ │ │ ] │ │ │",
"│ │ │ │ │ version │ 5. │ │ │",
"│ │ │ │ │ │ 5. │ │ │",
"│ │ │ │ │ │ 0 │ │ │",
"│ │ │ │ ╰──────────┴────╯ │ │",
"│ │ │ nu-ansi-term │ 0.46.0 │ │",
"│ │ │ │ ╭─────────┬─────╮ │ │",
"│ │ │ nu-cli │ │ path │ ./c │ │ │",
"│ │ │ │ │ │ rat │ │ │",
"│ │ │ │ │ │ es/ │ │ │",
"│ │ │ │ │ │ nu- │ │ │",
"│ │ │ │ │ │ cli │ │ │",
"│ │ │ │ │ version │ 0.7 │ │ │",
"│ │ │ │ │ │ 4.1 │ │ │",
"│ │ │ │ ╰─────────┴─────╯ │ │",
"│ │ │ │ ╭─────────┬─────╮ │ │",
"│ │ │ nu-engine │ │ path │ ./c │ │ │",
"│ │ │ │ │ │ rat │ │ │",
"│ │ │ │ │ │ es/ │ │ │",
"│ │ │ │ │ │ nu- │ │ │",
"│ │ │ │ │ │ eng │ │ │",
"│ │ │ │ │ │ ine │ │ │",
"│ │ │ │ │ version │ 0.7 │ │ │",
"│ │ │ │ │ │ 4.1 │ │ │",
"│ │ │ │ ╰─────────┴─────╯ │ │",
"│ │ │ rayon │ 1.6.1 │ │",
"│ │ │ │ ╭──────────┬────╮ │ │",
"│ │ │ reedline │ │ features │ [l │ │ │",
"│ │ │ │ │ │ is │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ │ │ 2 │ │ │",
"│ │ │ │ │ │ it │ │ │",
"│ │ │ │ │ │ em │ │ │",
"│ │ │ │ │ │ s] │ │ │",
"│ │ │ │ │ version │ 0. │ │ │",
"│ │ │ │ │ │ 14 │ │ │",
"│ │ │ │ │ │ .0 │ │ │",
"│ │ │ │ ╰──────────┴────╯ │ │",
"│ │ │ simplelog │ 0.12.0 │ │",
"│ │ │ time │ 0.3.12 │ │",
"│ │ ╰───────────────┴───────────────────╯ │",
"│ │ ╭───────────────────┬───────────────╮ │",
"│ dev-dependencies │ │ assert_cmd │ 2.0.2 │ │",
"│ │ │ criterion │ 0.4 │ │",
"│ │ │ hamcrest2 │ 0.3.0 │ │",
"│ │ │ itertools │ 0.10.3 │ │",
"│ │ │ nu-test-support │ {record 2 │ │",
"│ │ │ │ fields} │ │",
"│ │ │ pretty_assertions │ 1.0.0 │ │",
"│ │ │ rstest │ {record 2 │ │",
"│ │ │ │ fields} │ │",
"│ │ │ serial_test │ 0.10.0 │ │",
"│ │ │ tempfile │ 3.2.0 │ │",
"│ │ ╰───────────────────┴───────────────╯ │",
"│ │ ╭─────────────────────┬─────────────╮ │",
"│ features │ │ │ ╭───┬─────╮ │ │",
"│ │ │ default │ │ 0 │ plu │ │ │",
"│ │ │ │ │ │ gin │ │ │",
"│ │ │ │ │ 1 │ whi │ │ │",
"│ │ │ │ │ │ ch- │ │ │",
"│ │ │ │ │ │ sup │ │ │",
"│ │ │ │ │ │ por │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ │ 2 │ tra │ │ │",
"│ │ │ │ │ │ sh- │ │ │",
"│ │ │ │ │ │ sup │ │ │",
"│ │ │ │ │ │ por │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ │ 3 │ sql │ │ │",
"│ │ │ │ │ │ ite │ │ │",
"│ │ │ │ ╰───┴─────╯ │ │",
"│ │ │ │ ╭───┬─────╮ │ │",
"│ │ │ extra │ │ 0 │ def │ │ │",
"│ │ │ │ │ │ aul │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ ╰───┴─────╯ │ │",
"│ │ │ │ ╭───┬─────╮ │ │",
"│ │ │ plugin │ │ 0 │ nu- │ │ │",
"│ │ │ │ │ │ plu │ │ │",
"│ │ │ │ │ │ gin │ │ │",
"│ │ │ │ │ 1 │ nu- │ │ │",
"│ │ │ │ │ │ cli │ │ │",
"│ │ │ │ │ │ /pl │ │ │",
"│ │ │ │ │ │ ugi │ │ │",
"│ │ │ │ │ │ n │ │ │",
"│ │ │ │ │ 2 │ nu- │ │ │",
"│ │ │ │ │ │ par │ │ │",
"│ │ │ │ │ │ ser │ │ │",
"│ │ │ │ │ │ /pl │ │ │",
"│ │ │ │ │ │ ugi │ │ │",
"│ │ │ │ │ │ n │ │ │",
"│ │ │ │ │ 3 │ nu- │ │ │",
"│ │ │ │ │ │ com │ │ │",
"│ │ │ │ │ │ man │ │ │",
"│ │ │ │ │ │ d/p │ │ │",
"│ │ │ │ │ │ lug │ │ │",
"│ │ │ │ │ │ in │ │ │",
"│ │ │ │ │ 4 │ nu- │ │ │",
"│ │ │ │ │ │ pro │ │ │",
"│ │ │ │ │ │ toc │ │ │",
"│ │ │ │ │ │ ol/ │ │ │",
"│ │ │ │ │ │ plu │ │ │",
"│ │ │ │ │ │ gin │ │ │",
"│ │ │ │ │ 5 │ nu- │ │ │",
"│ │ │ │ │ │ eng │ │ │",
"│ │ │ │ │ │ ine │ │ │",
"│ │ │ │ │ │ /pl │ │ │",
"│ │ │ │ │ │ ugi │ │ │",
"│ │ │ │ │ │ n │ │ │",
"│ │ │ │ ╰───┴─────╯ │ │",
"│ │ │ │ ╭───┬─────╮ │ │",
"│ │ │ stable │ │ 0 │ def │ │ │",
"│ │ │ │ │ │ aul │ │ │",
"│ │ │ │ │ │ t │ │ │",
"│ │ │ │ ╰───┴─────╯ │ │",
"│ │ │ │ ╭───┬─────╮ │ │",
"│ │ │ static-link-openssl │ │ 0 │ dep │ │ │",
"│ │ │ │ │ │ :op │ │ │",
"│ │ │ │ │ │ ens │ │ │",
"│ │ │ │ │ │ sl │ │ │",
"│ │ │ │ ╰───┴─────╯ │ │",
"│ │ │ │ ╭───┬─────╮ │ │",
"│ │ │ trash-support │ │ 0 │ nu- │ │ │",
"│ │ │ │ │ │ com │ │ │",
"│ │ │ │ │ │ man │ │ │",
"│ │ │ │ │ │ d/t │ │ │",
"│ │ │ │ │ │ ras │ │ │",
"│ │ │ │ │ │ h-s │ │ │",
"│ │ │ │ │ │ upp │ │ │",
"│ │ │ │ │ │ ort │ │ │",
"│ │ │ │ ╰───┴─────╯ │ │",
"│ │ │ wasi │ [list 0 │ │",
"│ │ │ │ items] │ │",
"│ │ │ │ ╭───┬─────╮ │ │",
"│ │ │ which-support │ │ 0 │ nu- │ │ │",
"│ │ │ │ │ │ com │ │ │",
"│ │ │ │ │ │ man │ │ │",
"│ │ │ │ │ │ d/w │ │ │",
"│ │ │ │ │ │ hic │ │ │",
"│ │ │ │ │ │ h-s │ │ │",
"│ │ │ │ │ │ upp │ │ │",
"│ │ │ │ │ │ ort │ │ │",
"│ │ │ │ ╰───┴─────╯ │ │",
"│ │ ╰─────────────────────┴─────────────╯ │",
"│ │ ╭───────────────┬───────────────────╮ │",
"│ package │ │ │ ╭───┬───────────╮ │ │",
"│ │ │ authors │ │ 0 │ The │ │ │",
"│ │ │ │ │ │ Nushell │ │ │",
"│ │ │ │ │ │ Project D │ │ │",
"│ │ │ │ │ │ evelopers │ │ │",
"│ │ │ │ ╰───┴───────────╯ │ │",
"│ │ │ default-run │ nu │ │",
"│ │ │ description │ A new type of │ │",
"│ │ │ │ shell │ │",
"│ │ │ documentation │ https://www.nushe │ │",
"│ │ │ │ ll.sh/book/ │ │",
"│ │ │ edition │ 2021 │ │",
"│ │ │ │ ╭───┬────────╮ │ │",
"│ │ │ exclude │ │ 0 │ images │ │ │",
"│ │ │ │ ╰───┴────────╯ │ │",
"│ │ │ homepage │ https://www.nushe │ │",
"│ │ │ │ ll.sh │ │",
"│ │ │ license │ MIT │ │",
"│ │ │ │ ╭──────────┬────╮ │ │",
"│ │ │ metadata │ │ binstall │ {r │ │ │",
"│ │ │ │ │ │ ec │ │ │",
"│ │ │ │ │ │ or │ │ │",
"│ │ │ │ │ │ d │ │ │",
"│ │ │ │ │ │ 3 │ │ │",
"│ │ │ │ │ │ fi │ │ │",
"│ │ │ │ │ │ el │ │ │",
"│ │ │ │ │ │ ds │ │ │",
"│ │ │ │ │ │ } │ │ │",
"│ │ │ │ ╰──────────┴────╯ │ │",
"│ │ │ name │ nu │ │",
"│ │ │ repository │ https://github.co │ │",
"│ │ │ │ m/nushell/nushell │ │",
"│ │ │ rust-version │ 1.60 │ │",
"│ │ │ version │ 0.74.1 │ │",
"│ │ ╰───────────────┴───────────────────╯ │",
"│ │ ╭───────────┬───────────────────────╮ │",
"│ patch │ │ │ ╭──────────┬────────╮ │ │",
"│ │ │ crates-io │ │ reedline │ {recor │ │ │",
"│ │ │ │ │ │ d 2 fi │ │ │",
"│ │ │ │ │ │ elds} │ │ │",
"│ │ │ │ ╰──────────┴────────╯ │ │",
"│ │ ╰───────────┴───────────────────────╯ │",
"│ target │ {record 3 fields} │",
"│ │ ╭─────────┬─────────────────────────╮ │",
"│ workspace │ │ │ ╭────┬────────────────╮ │ │",
"│ │ │ members │ │ 0 │ crates/nu-cli │ │ │",
"│ │ │ │ │ 1 │ crates/nu-engi │ │ │",
"│ │ │ │ │ │ ne │ │ │",
"│ │ │ │ │ 2 │ crates/nu-pars │ │ │",
"│ │ │ │ │ │ er │ │ │",
"│ │ │ │ │ 3 │ crates/nu-syst │ │ │",
"│ │ │ │ │ │ em │ │ │",
"│ │ │ │ │ 4 │ crates/nu-comm │ │ │",
"│ │ │ │ │ │ and │ │ │",
"│ │ │ │ │ 5 │ crates/nu-prot │ │ │",
"│ │ │ │ │ │ ocol │ │ │",
"│ │ │ │ │ 6 │ crates/nu-plug │ │ │",
"│ │ │ │ │ │ in │ │ │",
"│ │ │ │ │ 7 │ crates/nu_plug │ │ │",
"│ │ │ │ │ │ in_inc │ │ │",
"│ │ │ │ │ 8 │ crates/nu_plug │ │ │",
"│ │ │ │ │ │ in_gstat │ │ │",
"│ │ │ │ │ 9 │ crates/nu_plug │ │ │",
"│ │ │ │ │ │ in_example │ │ │",
"│ │ │ │ │ 10 │ crates/nu_plug │ │ │",
"│ │ │ │ │ │ in_query │ │ │",
"│ │ │ │ │ 11 │ crates/nu_plug │ │ │",
"│ │ │ │ │ │ in_custom_valu │ │ │",
"│ │ │ │ │ │ es │ │ │",
"│ │ │ │ │ 12 │ crates/nu-util │ │ │",
"│ │ │ │ │ │ s │ │ │",
"│ │ │ │ ╰────┴────────────────╯ │ │",
"│ │ ╰─────────┴─────────────────────────╯ │",
"╰──────────────────┴───────────────────────────────────────╯",
]);
assert_eq!(actual.out, expected);
let actual = nu!(
cwd: dirs.test(), pipeline(
"open sample.toml | table --expand --width=40"
));
_print_lines(&actual.out, 40);
let expected = join_lines([
"╭──────────────────┬───────────────────╮",
"│ bench │ [table 1 row] │",
"│ bin │ [table 1 row] │",
"│ dependencies │ {record 13 │",
"│ │ fields} │",
"│ dev-dependencies │ {record 9 fields} │",
"│ features │ {record 8 fields} │",
"│ package │ {record 13 │",
"│ │ fields} │",
"│ │ ╭───────────┬───╮ │",
"│ patch │ │ crates-io │ { │ │",
"│ │ │ │ r │ │",
"│ │ │ │ e │ │",
"│ │ │ │ c │ │",
"│ │ │ │ o │ │",
"│ │ │ │ r │ │",
"│ │ │ │ d │ │",
"│ │ │ │ │ │",
"│ │ │ │ 1 │ │",
"│ │ │ │ │ │",
"│ │ │ │ f │ │",
"│ │ │ │ i │ │",
"│ │ │ │ e │ │",
"│ │ │ │ l │ │",
"│ │ │ │ d │ │",
"│ │ │ │ } │ │",
"│ │ ╰───────────┴───╯ │",
"│ target │ {record 3 fields} │",
"│ │ ╭─────────┬─────╮ │",
"│ workspace │ │ members │ [li │ │",
"│ │ │ │ st │ │",
"│ │ │ │ 13 │ │",
"│ │ │ │ ite │ │",
"│ │ │ │ ms] │ │",
"│ │ ╰─────────┴─────╯ │",
"╰──────────────────┴───────────────────╯",
]);
assert_eq!(actual.out, expected);
})
}
#[test]
fn table_expande_with_no_header_internally_0() {
use "search_result" style to colorize matching strings (fixes #9275) (#9326) This change introduces new `search_result` style supported in the color config. The change also removes obsolete check for `config.ls_colors` for computing the style. `config.ls_colors` has been removed last year, so this removes the reference to the obsolete flag, along with a cleanup that removes all the code that used to rely on ls_colors for highlighting search results. # Description <!-- Thank you for improving Nushell. Please, check our [contributing guide](../CONTRIBUTING.md) and talk to the core team before making major changes. Description of your pull request goes here. **Provide examples and/or screenshots** if your changes affect the user experience. --> # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-01 22:51:18 +02:00
let nu_value = r##"{ "config ": { "ls": { "use_ls_colors": true, "clickable_links": false }, "rm": { "always_trash": false }, "cd": { "abbreviations": false }, "table": { "mode": "rounded", "index_mode": "always", "trim": { "methodology": "wrapping", "wrapping_try_keep_words": true, "truncating_suffix": "..." } }, "explore": { "help_banner": true, "exit_esc": true, "command_bar_text": "#C4C9C6", "status_bar_background": { "fg": "#1D1F21", "bg": "#C4C9C6" }, "highlight": { "bg": "yellow", "fg": "black" }, "status": {}, "try": {}, "table": { "split_line": "#404040", "cursor": true, "line_index": true, "line_shift": true, "line_head_top": true, "line_head_bottom": true, "show_head": true, "show_index": true }, "config": { "cursor_color": { "bg": "yellow", "fg": "black" } } }, "history": { "max_size": 10000, "sync_on_enter": true, "file_format": "plaintext" }, "completions": { "case_sensitive": false, "quick": true, "partial": true, "algorithm": "prefix", "external": { "enable": true, "max_results": 100, "completer": null } }, "filesize": { "metric": true, "format": "auto" }, "cursor_shape": { "emacs": "line", "vi_insert": "block", "vi_normal": "underscore" }, "color_config": { "separator": "white", "leading_trailing_space_bg": { "attr": "n" }, "header": "green_bold", "empty": "blue", "bool": null, "int": "white", "filesize": null, "duration": "white", "date": null, "range": "white", "float": "white", "string": "white", "nothing": "white", "binary": "white", "cellpath": "white", "row_index": "green_bold", "record": "white", "list": "white", "block": "white", "hints": "dark_gray", "search_result": {"fg": "white", "bg": "red"}, "shape_and": "purple_bold", "shape_binary": "purple_bold", "shape_block": "blue_bold", "shape_bool": "light_cyan", "shape_custom": "green", "shape_datetime": "cyan_bold", "shape_directory": "cyan", "shape_external": "cyan", "shape_externalarg": "green_bold", "shape_filepath": "cyan", "shape_flag": "blue_bold", "shape_float": "purple_bold", "shape_garbage": { "fg": "#FFFFFF", "bg": "#FF0000", "attr": "b" }, "shape_globpattern": "cyan_bold", "shape_int": "purple_bold", "shape_internalcall": "cyan_bold", "shape_list": "cyan_bold", "shape_literal": "blue", "shape_matching_brackets": { "attr": "u" }, "shape_nothing": "light_cyan", "shape_operator": "yellow", "shape_or": "purple_bold", "shape_pipe": "purple_bold", "shape_range": "yellow_bold", "shape_record": "cyan_bold", "shape_redirection": "purple_bold", "shape_signature": "green_bold", "shape_string": "green", "shape_string_interpolation": "cyan_bold", "shape_table": "blue_bold", "shape_variable": "purple" }, "use_grid_icons": true, "footer_mode": "25", "float_precision": 2, "use_ansi_coloring": true, "edit_mode": "emacs", "shell_integration": true, "show_banner": true, "render_right_prompt_on_last_line": false, "hooks": { "pre_prompt": [ null ], "pre_execution": [ null ], "env_change": { "PWD": [ null ] }, "display_output": null }, "menus": [ { "name": "completion_menu", "only_buffer_difference": false, "marker": "| ", "type": { "layout": "columnar", "columns": 4, "col_width": 20, "col_padding": 2 }, "style": { "text": "green", "selected_text": "green_reverse", "description_text": "yellow" } }, { "name": "history_menu", "only_buffer_difference": true, "marker": "? ", "type": { "layout": "list", "page_size": 10 }, "style": { "text": "green", "selected_text": "green_reverse", "description_text": "yellow" } }, { "name": "help_menu", "only_buffer_difference": true, "marker": "? ", "type": { "layout": "description", "columns": 4, "col_width": 20, "col_padding": 2, "selection_rows": 4, "description_rows": 10 }, "style": { "text": "green", "selected_text": "green_reverse", "description_text": "yellow" } }, { "name": "commands_menu", "only_buffer_difference": false, "marker": "# ", "type": { "layout": "columnar", "columns": 4, "col_width": 20, "col_padding": 2 }, "style": { "text": "green", "selected_text": "green_reverse", "description_text": "yellow" }, "source": null }, { "name": "vars_menu", "only_buffer_difference": true, "marker": "# ", "ty
let actual = nu!(format!("{} | table --expand --width 141", nu_value.trim()));
assert_eq!(
actual.out,
join_lines([
"╭────────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮",
"│ │ ╭──────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────╮ │",
"│ config │ │ │ ╭─────────────────┬───────╮ │ │",
"│ │ │ ls │ │ use_ls_colors │ true │ │ │",
"│ │ │ │ │ clickable_links │ false │ │ │",
"│ │ │ │ ╰─────────────────┴───────╯ │ │",
"│ │ │ │ ╭──────────────┬───────╮ │ │",
"│ │ │ rm │ │ always_trash │ false │ │ │",
"│ │ │ │ ╰──────────────┴───────╯ │ │",
"│ │ │ │ ╭───────────────┬───────╮ │ │",
"│ │ │ cd │ │ abbreviations │ false │ │ │",
"│ │ │ │ ╰───────────────┴───────╯ │ │",
"│ │ │ │ ╭────────────┬────────────────────────────────────────╮ │ │",
"│ │ │ table │ │ mode │ rounded │ │ │",
"│ │ │ │ │ index_mode │ always │ │ │",
"│ │ │ │ │ │ ╭─────────────────────────┬──────────╮ │ │ │",
"│ │ │ │ │ trim │ │ methodology │ wrapping │ │ │ │",
"│ │ │ │ │ │ │ wrapping_try_keep_words │ true │ │ │ │",
"│ │ │ │ │ │ │ truncating_suffix │ ... │ │ │ │",
"│ │ │ │ │ │ ╰─────────────────────────┴──────────╯ │ │ │",
"│ │ │ │ ╰────────────┴────────────────────────────────────────╯ │ │",
"│ │ │ │ ╭───────────────────────────────┬───────────────────────────────────────────╮ │ │",
"│ │ │ explore │ │ help_banner │ true │ │ │",
"│ │ │ │ │ exit_esc │ true │ │ │",
"│ │ │ │ │ command_bar_text │ #C4C9C6 │ │ │",
"│ │ │ │ │ │ ╭────┬─────────╮ │ │ │",
"│ │ │ │ │ status_bar_background │ │ fg │ #1D1F21 │ │ │ │",
"│ │ │ │ │ │ │ bg │ #C4C9C6 │ │ │ │",
"│ │ │ │ │ │ ╰────┴─────────╯ │ │ │",
"│ │ │ │ │ │ ╭────┬────────╮ │ │ │",
"│ │ │ │ │ highlight │ │ bg │ yellow │ │ │ │",
"│ │ │ │ │ │ │ fg │ black │ │ │ │",
"│ │ │ │ │ │ ╰────┴────────╯ │ │ │",
Display empty records and lists (#7925) # Description Fix some issues related to #7444 1. Empty lists and records are now displayed as a small notice in a box: ![image](https://user-images.githubusercontent.com/17511668/215832023-3f8d743a-2899-416f-9109-7876ad2bbedf.png) ![image](https://user-images.githubusercontent.com/17511668/215832273-c737b8a4-af33-4c16-8dd3-bd4f0fd19b5a.png) 2. Empty records are now correctly displayed if inside of another record list or table: ![image](https://user-images.githubusercontent.com/17511668/215832597-00f0cebc-a3b6-4ce8-8373-a9340d4c7020.png) ![image](https://user-images.githubusercontent.com/17511668/215832540-ab0e2a14-b8f6-4f47-976c-42003b622ef6.png) 3. Fixed inconsistent coloring of empty list placeholder inside of lists/tables: ![image](https://user-images.githubusercontent.com/17511668/215832924-813ffe17-e04e-4301-97c3-1bdbccf1825c.png) ![image](https://user-images.githubusercontent.com/17511668/215832963-4765c4cf-3036-4bcc-81e1-ced941fa47cb.png) # User-Facing Changes `table` command now displays empty records and lists like a table with text and correctly displays empty records inside tables and lists. New behavior of displaying empty lists and records can be disabled using `table.show_empty` config option. # Tests + Formatting Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass # After Submitting If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date.
2023-02-22 17:18:33 +01:00
"│ │ │ │ │ status │ {record 0 fields} │ │ │",
"│ │ │ │ │ try │ {record 0 fields} │ │ │",
"│ │ │ │ │ │ ╭──────────────────┬─────────╮ │ │ │",
"│ │ │ │ │ table │ │ split_line │ #404040 │ │ │ │",
"│ │ │ │ │ │ │ cursor │ true │ │ │ │",
"│ │ │ │ │ │ │ line_index │ true │ │ │ │",
"│ │ │ │ │ │ │ line_shift │ true │ │ │ │",
"│ │ │ │ │ │ │ line_head_top │ true │ │ │ │",
"│ │ │ │ │ │ │ line_head_bottom │ true │ │ │ │",
"│ │ │ │ │ │ │ show_head │ true │ │ │ │",
"│ │ │ │ │ │ │ show_index │ true │ │ │ │",
"│ │ │ │ │ │ ╰──────────────────┴─────────╯ │ │ │",
"│ │ │ │ │ │ ╭──────────────┬─────────────────╮ │ │ │",
"│ │ │ │ │ config │ │ │ ╭────┬────────╮ │ │ │ │",
"│ │ │ │ │ │ │ cursor_color │ │ bg │ yellow │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ fg │ black │ │ │ │ │",
"│ │ │ │ │ │ │ │ ╰────┴────────╯ │ │ │ │",
"│ │ │ │ │ │ ╰──────────────┴─────────────────╯ │ │ │",
"│ │ │ │ ╰───────────────────────────────┴───────────────────────────────────────────╯ │ │",
"│ │ │ │ ╭───────────────┬───────────╮ │ │",
"│ │ │ history │ │ max_size │ 10000 │ │ │",
"│ │ │ │ │ sync_on_enter │ true │ │ │",
"│ │ │ │ │ file_format │ plaintext │ │ │",
"│ │ │ │ ╰───────────────┴───────────╯ │ │",
"│ │ │ │ ╭────────────────┬────────────────────────╮ │ │",
"│ │ │ completions │ │ case_sensitive │ false │ │ │",
"│ │ │ │ │ quick │ true │ │ │",
"│ │ │ │ │ partial │ true │ │ │",
"│ │ │ │ │ algorithm │ prefix │ │ │",
"│ │ │ │ │ │ ╭─────────────┬──────╮ │ │ │",
"│ │ │ │ │ external │ │ enable │ true │ │ │ │",
"│ │ │ │ │ │ │ max_results │ 100 │ │ │ │",
"│ │ │ │ │ │ │ completer │ │ │ │ │",
"│ │ │ │ │ │ ╰─────────────┴──────╯ │ │ │",
"│ │ │ │ ╰────────────────┴────────────────────────╯ │ │",
"│ │ │ │ ╭────────┬──────╮ │ │",
"│ │ │ filesize │ │ metric │ true │ │ │",
"│ │ │ │ │ format │ auto │ │ │",
"│ │ │ │ ╰────────┴──────╯ │ │",
"│ │ │ │ ╭───────────┬────────────╮ │ │",
"│ │ │ cursor_shape │ │ emacs │ line │ │ │",
"│ │ │ │ │ vi_insert │ block │ │ │",
"│ │ │ │ │ vi_normal │ underscore │ │ │",
"│ │ │ │ ╰───────────┴────────────╯ │ │",
"│ │ │ │ ╭────────────────────────────┬────────────────────╮ │ │",
"│ │ │ color_config │ │ separator │ white │ │ │",
"│ │ │ │ │ │ ╭──────┬───╮ │ │ │",
"│ │ │ │ │ leading_trailing_space_bg │ │ attr │ n │ │ │ │",
"│ │ │ │ │ │ ╰──────┴───╯ │ │ │",
"│ │ │ │ │ header │ green_bold │ │ │",
"│ │ │ │ │ empty │ blue │ │ │",
"│ │ │ │ │ bool │ │ │ │",
"│ │ │ │ │ int │ white │ │ │",
"│ │ │ │ │ filesize │ │ │ │",
"│ │ │ │ │ duration │ white │ │ │",
"│ │ │ │ │ date │ │ │ │",
"│ │ │ │ │ range │ white │ │ │",
"│ │ │ │ │ float │ white │ │ │",
"│ │ │ │ │ string │ white │ │ │",
"│ │ │ │ │ nothing │ white │ │ │",
"│ │ │ │ │ binary │ white │ │ │",
"│ │ │ │ │ cellpath │ white │ │ │",
"│ │ │ │ │ row_index │ green_bold │ │ │",
"│ │ │ │ │ record │ white │ │ │",
"│ │ │ │ │ list │ white │ │ │",
"│ │ │ │ │ block │ white │ │ │",
"│ │ │ │ │ hints │ dark_gray │ │ │",
use "search_result" style to colorize matching strings (fixes #9275) (#9326) This change introduces new `search_result` style supported in the color config. The change also removes obsolete check for `config.ls_colors` for computing the style. `config.ls_colors` has been removed last year, so this removes the reference to the obsolete flag, along with a cleanup that removes all the code that used to rely on ls_colors for highlighting search results. # Description <!-- Thank you for improving Nushell. Please, check our [contributing guide](../CONTRIBUTING.md) and talk to the core team before making major changes. Description of your pull request goes here. **Provide examples and/or screenshots** if your changes affect the user experience. --> # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-01 22:51:18 +02:00
"│ │ │ │ │ │ ╭────┬───────╮ │ │ │",
"│ │ │ │ │ search_result │ │ fg │ white │ │ │ │",
"│ │ │ │ │ │ │ bg │ red │ │ │ │",
"│ │ │ │ │ │ ╰────┴───────╯ │ │ │",
"│ │ │ │ │ shape_and │ purple_bold │ │ │",
"│ │ │ │ │ shape_binary │ purple_bold │ │ │",
"│ │ │ │ │ shape_block │ blue_bold │ │ │",
"│ │ │ │ │ shape_bool │ light_cyan │ │ │",
"│ │ │ │ │ shape_custom │ green │ │ │",
"│ │ │ │ │ shape_datetime │ cyan_bold │ │ │",
"│ │ │ │ │ shape_directory │ cyan │ │ │",
"│ │ │ │ │ shape_external │ cyan │ │ │",
"│ │ │ │ │ shape_externalarg │ green_bold │ │ │",
"│ │ │ │ │ shape_filepath │ cyan │ │ │",
"│ │ │ │ │ shape_flag │ blue_bold │ │ │",
"│ │ │ │ │ shape_float │ purple_bold │ │ │",
"│ │ │ │ │ │ ╭──────┬─────────╮ │ │ │",
"│ │ │ │ │ shape_garbage │ │ fg │ #FFFFFF │ │ │ │",
"│ │ │ │ │ │ │ bg │ #FF0000 │ │ │ │",
"│ │ │ │ │ │ │ attr │ b │ │ │ │",
"│ │ │ │ │ │ ╰──────┴─────────╯ │ │ │",
"│ │ │ │ │ shape_globpattern │ cyan_bold │ │ │",
"│ │ │ │ │ shape_int │ purple_bold │ │ │",
"│ │ │ │ │ shape_internalcall │ cyan_bold │ │ │",
"│ │ │ │ │ shape_list │ cyan_bold │ │ │",
"│ │ │ │ │ shape_literal │ blue │ │ │",
"│ │ │ │ │ │ ╭──────┬───╮ │ │ │",
"│ │ │ │ │ shape_matching_brackets │ │ attr │ u │ │ │ │",
"│ │ │ │ │ │ ╰──────┴───╯ │ │ │",
"│ │ │ │ │ shape_nothing │ light_cyan │ │ │",
"│ │ │ │ │ shape_operator │ yellow │ │ │",
"│ │ │ │ │ shape_or │ purple_bold │ │ │",
"│ │ │ │ │ shape_pipe │ purple_bold │ │ │",
"│ │ │ │ │ shape_range │ yellow_bold │ │ │",
"│ │ │ │ │ shape_record │ cyan_bold │ │ │",
"│ │ │ │ │ shape_redirection │ purple_bold │ │ │",
"│ │ │ │ │ shape_signature │ green_bold │ │ │",
"│ │ │ │ │ shape_string │ green │ │ │",
"│ │ │ │ │ shape_string_interpolation │ cyan_bold │ │ │",
"│ │ │ │ │ shape_table │ blue_bold │ │ │",
"│ │ │ │ │ shape_variable │ purple │ │ │",
"│ │ │ │ ╰────────────────────────────┴────────────────────╯ │ │",
"│ │ │ use_grid_icons │ true │ │",
"│ │ │ footer_mode │ 25 │ │",
"│ │ │ float_precision │ 2 │ │",
"│ │ │ use_ansi_coloring │ true │ │",
"│ │ │ edit_mode │ emacs │ │",
"│ │ │ shell_integration │ true │ │",
"│ │ │ show_banner │ true │ │",
"│ │ │ render_right_prompt_on_last_line │ false │ │",
"│ │ │ │ ╭────────────────┬────────────────────╮ │ │",
"│ │ │ hooks │ │ │ ╭───┬──╮ │ │ │",
"│ │ │ │ │ pre_prompt │ │ 0 │ │ │ │ │",
"│ │ │ │ │ │ ╰───┴──╯ │ │ │",
"│ │ │ │ │ │ ╭───┬──╮ │ │ │",
"│ │ │ │ │ pre_execution │ │ 0 │ │ │ │ │",
"│ │ │ │ │ │ ╰───┴──╯ │ │ │",
"│ │ │ │ │ │ ╭─────┬──────────╮ │ │ │",
"│ │ │ │ │ env_change │ │ │ ╭───┬──╮ │ │ │ │",
"│ │ │ │ │ │ │ PWD │ │ 0 │ │ │ │ │ │",
"│ │ │ │ │ │ │ │ ╰───┴──╯ │ │ │ │",
"│ │ │ │ │ │ ╰─────┴──────────╯ │ │ │",
"│ │ │ │ │ display_output │ │ │ │",
"│ │ │ │ ╰────────────────┴────────────────────╯ │ │",
"│ │ │ │ ╭───┬───────────────────────────┬────────────────────────┬────────┬─────╮ │ │",
"│ │ │ menus │ │ # │ name │ only_buffer_difference │ marker │ ... │ │ │",
"│ │ │ │ ├───┼───────────────────────────┼────────────────────────┼────────┼─────┤ │ │",
"│ │ │ │ │ 0 │ completion_menu │ false │ | │ ... │ │ │",
"│ │ │ │ │ 1 │ history_menu │ true │ ? │ ... │ │ │",
"│ │ │ │ │ 2 │ help_menu │ true │ ? │ ... │ │ │",
"│ │ │ │ │ 3 │ commands_menu │ false │ # │ ... │ │ │",
"│ │ │ │ │ 4 │ vars_menu │ true │ # │ ... │ │ │",
"│ │ │ │ │ 5 │ commands_with_description │ true │ # │ ... │ │ │",
"│ │ │ │ ╰───┴───────────────────────────┴────────────────────────┴────────┴─────╯ │ │",
"│ │ │ │ ╭────┬───────────────────────────┬──────────┬─────────┬───────────────┬─────╮ │ │",
"│ │ │ keybindings │ │ # │ name │ modifier │ keycode │ mode │ ... │ │ │",
"│ │ │ │ ├────┼───────────────────────────┼──────────┼─────────┼───────────────┼─────┤ │ │",
"│ │ │ │ │ 0 │ completion_menu │ none │ tab │ ╭───┬───────╮ │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ │ 0 │ emacs │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 1 │ vi_no │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ rmal │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 2 │ vi_in │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ sert │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ ╰───┴───────╯ │ │ │ │",
"│ │ │ │ │ 1 │ completion_previous │ shift │ backtab │ ╭───┬───────╮ │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ │ 0 │ emacs │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 1 │ vi_no │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ rmal │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 2 │ vi_in │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ sert │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ ╰───┴───────╯ │ │ │ │",
"│ │ │ │ │ 2 │ history_menu │ control │ char_r │ emacs │ ... │ │ │",
"│ │ │ │ │ 3 │ next_page │ control │ char_x │ emacs │ ... │ │ │",
"│ │ │ │ │ 4 │ undo_or_previous_page │ control │ char_z │ emacs │ ... │ │ │",
"│ │ │ │ │ 5 │ yank │ control │ char_y │ emacs │ ... │ │ │",
"│ │ │ │ │ 6 │ unix-line-discard │ control │ char_u │ ╭───┬───────╮ │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ │ 0 │ emacs │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 1 │ vi_no │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ rmal │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 2 │ vi_in │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ sert │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ ╰───┴───────╯ │ │ │ │",
"│ │ │ │ │ 7 │ kill-line │ control │ char_k │ ╭───┬───────╮ │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ │ 0 │ emacs │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 1 │ vi_no │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ rmal │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 2 │ vi_in │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ sert │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ ╰───┴───────╯ │ │ │ │",
"│ │ │ │ │ 8 │ commands_menu │ control │ char_t │ ╭───┬───────╮ │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ │ 0 │ emacs │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 1 │ vi_no │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ rmal │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 2 │ vi_in │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ sert │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ ╰───┴───────╯ │ │ │ │",
"│ │ │ │ │ 9 │ vars_menu │ alt │ char_o │ ╭───┬───────╮ │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ │ 0 │ emacs │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 1 │ vi_no │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ rmal │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 2 │ vi_in │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ sert │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ ╰───┴───────╯ │ │ │ │",
"│ │ │ │ │ 10 │ commands_with_description │ control │ char_s │ ╭───┬───────╮ │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ │ 0 │ emacs │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 1 │ vi_no │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ rmal │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ 2 │ vi_in │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ │ │ sert │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ ╰───┴───────╯ │ │ │ │",
"│ │ │ │ ╰────┴───────────────────────────┴──────────┴─────────┴───────────────┴─────╯ │ │",
"│ │ ╰──────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────╯ │",
"╰────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯",
])
);
}
#[test]
fn table_expande_with_no_header_internally_1() {
use "search_result" style to colorize matching strings (fixes #9275) (#9326) This change introduces new `search_result` style supported in the color config. The change also removes obsolete check for `config.ls_colors` for computing the style. `config.ls_colors` has been removed last year, so this removes the reference to the obsolete flag, along with a cleanup that removes all the code that used to rely on ls_colors for highlighting search results. # Description <!-- Thank you for improving Nushell. Please, check our [contributing guide](../CONTRIBUTING.md) and talk to the core team before making major changes. Description of your pull request goes here. **Provide examples and/or screenshots** if your changes affect the user experience. --> # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-01 22:51:18 +02:00
let nu_value = r##"{ "config ": { "ls": { "use_ls_colors": true, "clickable_links": false }, "rm": { "always_trash": false }, "cd": { "abbreviations": false }, "table": { "mode": "rounded", "index_mode": "always", "trim": { "methodology": "wrapping", "wrapping_try_keep_words": true, "truncating_suffix": "..." } }, "explore": { "help_banner": true, "exit_esc": true, "command_bar_text": "#C4C9C6", "status_bar_background": { "fg": "#1D1F21", "bg": "#C4C9C6" }, "highlight": { "bg": "yellow", "fg": "black" }, "status": {}, "try": {}, "table": { "split_line": "#404040", "cursor": true, "line_index": true, "line_shift": true, "line_head_top": true, "line_head_bottom": true, "show_head": true, "show_index": true }, "config": { "cursor_color": { "bg": "yellow", "fg": "black" } } }, "history": { "max_size": 10000, "sync_on_enter": true, "file_format": "plaintext" }, "completions": { "case_sensitive": false, "quick": true, "partial": true, "algorithm": "prefix", "external": { "enable": true, "max_results": 100, "completer": null } }, "filesize": { "metric": true, "format": "auto" }, "cursor_shape": { "emacs": "line", "vi_insert": "block", "vi_normal": "underscore" }, "color_config": { "separator": "white", "leading_trailing_space_bg": { "attr": "n" }, "header": "green_bold", "empty": "blue", "bool": null, "int": "white", "filesize": null, "duration": "white", "date": null, "range": "white", "float": "white", "string": "white", "nothing": "white", "binary": "white", "cellpath": "white", "row_index": "green_bold", "record": "white", "list": "white", "block": "white", "hints": "dark_gray", "search_result": {"fg": "white", "bg": "red"}, "shape_and": "purple_bold", "shape_binary": "purple_bold", "shape_block": "blue_bold", "shape_bool": "light_cyan", "shape_custom": "green", "shape_datetime": "cyan_bold", "shape_directory": "cyan", "shape_external": "cyan", "shape_externalarg": "green_bold", "shape_filepath": "cyan", "shape_flag": "blue_bold", "shape_float": "purple_bold", "shape_garbage": { "fg": "#FFFFFF", "bg": "#FF0000", "attr": "b" }, "shape_globpattern": "cyan_bold", "shape_int": "purple_bold", "shape_internalcall": "cyan_bold", "shape_list": "cyan_bold", "shape_literal": "blue", "shape_matching_brackets": { "attr": "u" }, "shape_nothing": "light_cyan", "shape_operator": "yellow", "shape_or": "purple_bold", "shape_pipe": "purple_bold", "shape_range": "yellow_bold", "shape_record": "cyan_bold", "shape_redirection": "purple_bold", "shape_signature": "green_bold", "shape_string": "green", "shape_string_interpolation": "cyan_bold", "shape_table": "blue_bold", "shape_variable": "purple" }, "use_grid_icons": true, "footer_mode": "25", "float_precision": 2, "use_ansi_coloring": true, "edit_mode": "emacs", "shell_integration": true, "show_banner": true, "render_right_prompt_on_last_line": false, "hooks": { "pre_prompt": [ null ], "pre_execution": [ null ], "env_change": { "PWD": [ null ] }, "display_output": null }, "menus": [ { "name": "completion_menu", "only_buffer_difference": false, "marker": "| ", "type": { "layout": "columnar", "columns": 4, "col_width": 20, "col_padding": 2 }, "style": { "text": "green", "selected_text": "green_reverse", "description_text": "yellow" } }, { "name": "history_menu", "only_buffer_difference": true, "marker": "? ", "type": { "layout": "list", "page_size": 10 }, "style": { "text": "green", "selected_text": "green_reverse", "description_text": "yellow" } }, { "name": "help_menu", "only_buffer_difference": true, "marker": "? ", "type": { "layout": "description", "columns": 4, "col_width": 20, "col_padding": 2, "selection_rows": 4, "description_rows": 10 }, "style": { "text": "green", "selected_text": "green_reverse", "description_text": "yellow" } }, { "name": "commands_menu", "only_buffer_difference": false, "marker": "# ", "type": { "layout": "columnar", "columns": 4, "col_width": 20, "col_padding": 2 }, "style": { "text": "green", "selected_text": "green_reverse", "description_text": "yellow" }, "source": null }, { "name": "vars_menu", "only_buffer_difference": true, "marker": "# ", "ty
let actual = nu!(format!("{} | table --expand --width 136", nu_value.trim()));
assert_eq!(
actual.out,
join_lines([
"╭────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮",
"│ │ ╭──────────────────────────────────┬──────────────────────────────────────────────────────────────────────────╮ │",
"│ config │ │ │ ╭─────────────────┬───────╮ │ │",
"│ │ │ ls │ │ use_ls_colors │ true │ │ │",
"│ │ │ │ │ clickable_links │ false │ │ │",
"│ │ │ │ ╰─────────────────┴───────╯ │ │",
"│ │ │ │ ╭──────────────┬───────╮ │ │",
"│ │ │ rm │ │ always_trash │ false │ │ │",
"│ │ │ │ ╰──────────────┴───────╯ │ │",
"│ │ │ │ ╭───────────────┬───────╮ │ │",
"│ │ │ cd │ │ abbreviations │ false │ │ │",
"│ │ │ │ ╰───────────────┴───────╯ │ │",
"│ │ │ │ ╭────────────┬────────────────────────────────────────╮ │ │",
"│ │ │ table │ │ mode │ rounded │ │ │",
"│ │ │ │ │ index_mode │ always │ │ │",
"│ │ │ │ │ │ ╭─────────────────────────┬──────────╮ │ │ │",
"│ │ │ │ │ trim │ │ methodology │ wrapping │ │ │ │",
"│ │ │ │ │ │ │ wrapping_try_keep_words │ true │ │ │ │",
"│ │ │ │ │ │ │ truncating_suffix │ ... │ │ │ │",
"│ │ │ │ │ │ ╰─────────────────────────┴──────────╯ │ │ │",
"│ │ │ │ ╰────────────┴────────────────────────────────────────╯ │ │",
"│ │ │ │ ╭────────────────────────────┬─────────────────────────────────────────╮ │ │",
"│ │ │ explore │ │ help_banner │ true │ │ │",
"│ │ │ │ │ exit_esc │ true │ │ │",
"│ │ │ │ │ command_bar_text │ #C4C9C6 │ │ │",
"│ │ │ │ │ │ ╭────┬─────────╮ │ │ │",
"│ │ │ │ │ status_bar_background │ │ fg │ #1D1F21 │ │ │ │",
"│ │ │ │ │ │ │ bg │ #C4C9C6 │ │ │ │",
"│ │ │ │ │ │ ╰────┴─────────╯ │ │ │",
"│ │ │ │ │ │ ╭────┬────────╮ │ │ │",
"│ │ │ │ │ highlight │ │ bg │ yellow │ │ │ │",
"│ │ │ │ │ │ │ fg │ black │ │ │ │",
"│ │ │ │ │ │ ╰────┴────────╯ │ │ │",
Display empty records and lists (#7925) # Description Fix some issues related to #7444 1. Empty lists and records are now displayed as a small notice in a box: ![image](https://user-images.githubusercontent.com/17511668/215832023-3f8d743a-2899-416f-9109-7876ad2bbedf.png) ![image](https://user-images.githubusercontent.com/17511668/215832273-c737b8a4-af33-4c16-8dd3-bd4f0fd19b5a.png) 2. Empty records are now correctly displayed if inside of another record list or table: ![image](https://user-images.githubusercontent.com/17511668/215832597-00f0cebc-a3b6-4ce8-8373-a9340d4c7020.png) ![image](https://user-images.githubusercontent.com/17511668/215832540-ab0e2a14-b8f6-4f47-976c-42003b622ef6.png) 3. Fixed inconsistent coloring of empty list placeholder inside of lists/tables: ![image](https://user-images.githubusercontent.com/17511668/215832924-813ffe17-e04e-4301-97c3-1bdbccf1825c.png) ![image](https://user-images.githubusercontent.com/17511668/215832963-4765c4cf-3036-4bcc-81e1-ced941fa47cb.png) # User-Facing Changes `table` command now displays empty records and lists like a table with text and correctly displays empty records inside tables and lists. New behavior of displaying empty lists and records can be disabled using `table.show_empty` config option. # Tests + Formatting Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass # After Submitting If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date.
2023-02-22 17:18:33 +01:00
"│ │ │ │ │ status │ {record 0 fields} │ │ │",
"│ │ │ │ │ try │ {record 0 fields} │ │ │",
"│ │ │ │ │ │ ╭──────────────────┬─────────╮ │ │ │",
"│ │ │ │ │ table │ │ split_line │ #404040 │ │ │ │",
"│ │ │ │ │ │ │ cursor │ true │ │ │ │",
"│ │ │ │ │ │ │ line_index │ true │ │ │ │",
"│ │ │ │ │ │ │ line_shift │ true │ │ │ │",
"│ │ │ │ │ │ │ line_head_top │ true │ │ │ │",
"│ │ │ │ │ │ │ line_head_bottom │ true │ │ │ │",
"│ │ │ │ │ │ │ show_head │ true │ │ │ │",
"│ │ │ │ │ │ │ show_index │ true │ │ │ │",
"│ │ │ │ │ │ ╰──────────────────┴─────────╯ │ │ │",
"│ │ │ │ │ │ ╭──────────────┬─────────────────╮ │ │ │",
"│ │ │ │ │ config │ │ │ ╭────┬────────╮ │ │ │ │",
"│ │ │ │ │ │ │ cursor_color │ │ bg │ yellow │ │ │ │ │",
"│ │ │ │ │ │ │ │ │ fg │ black │ │ │ │ │",
"│ │ │ │ │ │ │ │ ╰────┴────────╯ │ │ │ │",
"│ │ │ │ │ │ ╰──────────────┴─────────────────╯ │ │ │",
"│ │ │ │ ╰────────────────────────────┴─────────────────────────────────────────╯ │ │",
"│ │ │ │ ╭───────────────┬───────────╮ │ │",
"│ │ │ history │ │ max_size │ 10000 │ │ │",
"│ │ │ │ │ sync_on_enter │ true │ │ │",
"│ │ │ │ │ file_format │ plaintext │ │ │",
"│ │ │ │ ╰───────────────┴───────────╯ │ │",
"│ │ │ │ ╭────────────────┬────────────────────────╮ │ │",
"│ │ │ completions │ │ case_sensitive │ false │ │ │",
"│ │ │ │ │ quick │ true │ │ │",
"│ │ │ │ │ partial │ true │ │ │",
"│ │ │ │ │ algorithm │ prefix │ │ │",
"│ │ │ │ │ │ ╭─────────────┬──────╮ │ │ │",
"│ │ │ │ │ external │ │ enable │ true │ │ │ │",
"│ │ │ │ │ │ │ max_results │ 100 │ │ │ │",
"│ │ │ │ │ │ │ completer │ │ │ │ │",
"│ │ │ │ │ │ ╰─────────────┴──────╯ │ │ │",
"│ │ │ │ ╰────────────────┴────────────────────────╯ │ │",
"│ │ │ │ ╭────────┬──────╮ │ │",
"│ │ │ filesize │ │ metric │ true │ │ │",
"│ │ │ │ │ format │ auto │ │ │",
"│ │ │ │ ╰────────┴──────╯ │ │",
"│ │ │ │ ╭───────────┬────────────╮ │ │",
"│ │ │ cursor_shape │ │ emacs │ line │ │ │",
"│ │ │ │ │ vi_insert │ block │ │ │",
"│ │ │ │ │ vi_normal │ underscore │ │ │",
"│ │ │ │ ╰───────────┴────────────╯ │ │",
"│ │ │ │ ╭────────────────────────────┬────────────────────╮ │ │",
"│ │ │ color_config │ │ separator │ white │ │ │",
"│ │ │ │ │ │ ╭──────┬───╮ │ │ │",
"│ │ │ │ │ leading_trailing_space_bg │ │ attr │ n │ │ │ │",
"│ │ │ │ │ │ ╰──────┴───╯ │ │ │",
"│ │ │ │ │ header │ green_bold │ │ │",
"│ │ │ │ │ empty │ blue │ │ │",
"│ │ │ │ │ bool │ │ │ │",
"│ │ │ │ │ int │ white │ │ │",
"│ │ │ │ │ filesize │ │ │ │",
"│ │ │ │ │ duration │ white │ │ │",
"│ │ │ │ │ date │ │ │ │",
"│ │ │ │ │ range │ white │ │ │",
"│ │ │ │ │ float │ white │ │ │",
"│ │ │ │ │ string │ white │ │ │",
"│ │ │ │ │ nothing │ white │ │ │",
"│ │ │ │ │ binary │ white │ │ │",
"│ │ │ │ │ cellpath │ white │ │ │",
"│ │ │ │ │ row_index │ green_bold │ │ │",
"│ │ │ │ │ record │ white │ │ │",
"│ │ │ │ │ list │ white │ │ │",
"│ │ │ │ │ block │ white │ │ │",
"│ │ │ │ │ hints │ dark_gray │ │ │",
use "search_result" style to colorize matching strings (fixes #9275) (#9326) This change introduces new `search_result` style supported in the color config. The change also removes obsolete check for `config.ls_colors` for computing the style. `config.ls_colors` has been removed last year, so this removes the reference to the obsolete flag, along with a cleanup that removes all the code that used to rely on ls_colors for highlighting search results. # Description <!-- Thank you for improving Nushell. Please, check our [contributing guide](../CONTRIBUTING.md) and talk to the core team before making major changes. Description of your pull request goes here. **Provide examples and/or screenshots** if your changes affect the user experience. --> # User-Facing Changes <!-- List of all changes that impact the user experience here. This helps us keep track of breaking changes. --> # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-01 22:51:18 +02:00
"│ │ │ │ │ │ ╭────┬───────╮ │ │ │",
"│ │ │ │ │ search_result │ │ fg │ white │ │ │ │",
"│ │ │ │ │ │ │ bg │ red │ │ │ │",
"│ │ │ │ │ │ ╰────┴───────╯ │ │ │",
"│ │ │ │ │ shape_and │ purple_bold │ │ │",
"│ │ │ │ │ shape_binary │ purple_bold │ │ │",
"│ │ │ │ │ shape_block │ blue_bold │ │ │",
"│ │ │ │ │ shape_bool │ light_cyan │ │ │",
"│ │ │ │ │ shape_custom │ green │ │ │",
"│ │ │ │ │ shape_datetime │ cyan_bold │ │ │",
"│ │ │ │ │ shape_directory │ cyan │ │ │",
"│ │ │ │ │ shape_external │ cyan │ │ │",
"│ │ │ │ │ shape_externalarg │ green_bold │ │ │",
"│ │ │ │ │ shape_filepath │ cyan │ │ │",
"│ │ │ │ │ shape_flag │ blue_bold │ │ │",
"│ │ │ │ │ shape_float │ purple_bold │ │ │",
"│ │ │ │ │ │ ╭──────┬─────────╮ │ │ │",
"│ │ │ │ │ shape_garbage │ │ fg │ #FFFFFF │ │ │ │",
"│ │ │ │ │ │ │ bg │ #FF0000 │ │ │ │",
"│ │ │ │ │ │ │ attr │ b │ │ │ │",
"│ │ │ │ │ │ ╰──────┴─────────╯ │ │ │",
"│ │ │ │ │ shape_globpattern │ cyan_bold │ │ │",
"│ │ │ │ │ shape_int │ purple_bold │ │ │",
"│ │ │ │ │ shape_internalcall │ cyan_bold │ │ │",
"│ │ │ │ │ shape_list │ cyan_bold │ │ │",
"│ │ │ │ │ shape_literal │ blue │ │ │",
"│ │ │ │ │ │ ╭──────┬───╮ │ │ │",
"│ │ │ │ │ shape_matching_brackets │ │ attr │ u │ │ │ │",
"│ │ │ │ │ │ ╰──────┴───╯ │ │ │",
"│ │ │ │ │ shape_nothing │ light_cyan │ │ │",
"│ │ │ │ │ shape_operator │ yellow │ │ │",
"│ │ │ │ │ shape_or │ purple_bold │ │ │",
"│ │ │ │ │ shape_pipe │ purple_bold │ │ │",
"│ │ │ │ │ shape_range │ yellow_bold │ │ │",
"│ │ │ │ │ shape_record │ cyan_bold │ │ │",
"│ │ │ │ │ shape_redirection │ purple_bold │ │ │",
"│ │ │ │ │ shape_signature │ green_bold │ │ │",
"│ │ │ │ │ shape_string │ green │ │ │",
"│ │ │ │ │ shape_string_interpolation │ cyan_bold │ │ │",
"│ │ │ │ │ shape_table │ blue_bold │ │ │",
"│ │ │ │ │ shape_variable │ purple │ │ │",
"│ │ │ │ ╰────────────────────────────┴────────────────────╯ │ │",
"│ │ │ use_grid_icons │ true │ │",
"│ │ │ footer_mode │ 25 │ │",
"│ │ │ float_precision │ 2 │ │",
"│ │ │ use_ansi_coloring │ true │ │",
"│ │ │ edit_mode │ emacs │ │",
"│ │ │ shell_integration │ true │ │",
"│ │ │ show_banner │ true │ │",
"│ │ │ render_right_prompt_on_last_line │ false │ │",
"│ │ │ │ ╭────────────────┬────────────────────╮ │ │",
"│ │ │ hooks │ │ │ ╭───┬──╮ │ │ │",
"│ │ │ │ │ pre_prompt │ │ 0 │ │ │ │ │",
"│ │ │ │ │ │ ╰───┴──╯ │ │ │",
"│ │ │ │ │ │ ╭───┬──╮ │ │ │",
"│ │ │ │ │ pre_execution │ │ 0 │ │ │ │ │",
"│ │ │ │ │ │ ╰───┴──╯ │ │ │",
"│ │ │ │ │ │ ╭─────┬──────────╮ │ │ │",
"│ │ │ │ │ env_change │ │ │ ╭───┬──╮ │ │ │ │",
"│ │ │ │ │ │ │ PWD │ │ 0 │ │ │ │ │ │",
"│ │ │ │ │ │ │ │ ╰───┴──╯ │ │ │ │",
"│ │ │ │ │ │ ╰─────┴──────────╯ │ │ │",
"│ │ │ │ │ display_output │ │ │ │",
"│ │ │ │ ╰────────────────┴────────────────────╯ │ │",
"│ │ │ │ ╭───┬───────────────────────────┬────────────────────────┬─────╮ │ │",
"│ │ │ menus │ │ # │ name │ only_buffer_difference │ ... │ │ │",
"│ │ │ │ ├───┼───────────────────────────┼────────────────────────┼─────┤ │ │",
"│ │ │ │ │ 0 │ completion_menu │ false │ ... │ │ │",
"│ │ │ │ │ 1 │ history_menu │ true │ ... │ │ │",
"│ │ │ │ │ 2 │ help_menu │ true │ ... │ │ │",
"│ │ │ │ │ 3 │ commands_menu │ false │ ... │ │ │",
"│ │ │ │ │ 4 │ vars_menu │ true │ ... │ │ │",
"│ │ │ │ │ 5 │ commands_with_description │ true │ ... │ │ │",
"│ │ │ │ ╰───┴───────────────────────────┴────────────────────────┴─────╯ │ │",
"│ │ │ │ ╭────┬───────────────────────────┬──────────┬─────────┬──────────┬─────╮ │ │",
"│ │ │ keybindings │ │ # │ name │ modifier │ keycode │ mode │ ... │ │ │",
"│ │ │ │ ├────┼───────────────────────────┼──────────┼─────────┼──────────┼─────┤ │ │",
"│ │ │ │ │ 0 │ completion_menu │ none │ tab │ [list 3 │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ items] │ │ │ │",
"│ │ │ │ │ 1 │ completion_previous │ shift │ backtab │ [list 3 │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ items] │ │ │ │",
"│ │ │ │ │ 2 │ history_menu │ control │ char_r │ emacs │ ... │ │ │",
"│ │ │ │ │ 3 │ next_page │ control │ char_x │ emacs │ ... │ │ │",
"│ │ │ │ │ 4 │ undo_or_previous_page │ control │ char_z │ emacs │ ... │ │ │",
"│ │ │ │ │ 5 │ yank │ control │ char_y │ emacs │ ... │ │ │",
"│ │ │ │ │ 6 │ unix-line-discard │ control │ char_u │ [list 3 │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ items] │ │ │ │",
"│ │ │ │ │ 7 │ kill-line │ control │ char_k │ [list 3 │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ items] │ │ │ │",
"│ │ │ │ │ 8 │ commands_menu │ control │ char_t │ [list 3 │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ items] │ │ │ │",
"│ │ │ │ │ 9 │ vars_menu │ alt │ char_o │ [list 3 │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ items] │ │ │ │",
"│ │ │ │ │ 10 │ commands_with_description │ control │ char_s │ [list 3 │ ... │ │ │",
"│ │ │ │ │ │ │ │ │ items] │ │ │ │",
"│ │ │ │ ╰────┴───────────────────────────┴──────────┴─────────┴──────────┴─────╯ │ │",
"│ │ ╰──────────────────────────────────┴──────────────────────────────────────────────────────────────────────────╯ │",
"╰────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯",
])
);
}
#[test]
fn test_collapse_big_0() {
Playground::setup("test_expand_big_0", |dirs, sandbox| {
sandbox.with_files(vec![FileWithContent(
"sample.toml",
r#"
[package]
authors = ["The Nushell Project Developers"]
default-run = "nu"
description = "A new type of shell"
documentation = "https://www.nushell.sh/book/"
edition = "2021"
exclude = ["images"]
homepage = "https://www.nushell.sh"
license = "MIT"
name = "nu"
repository = "https://github.com/nushell/nushell"
rust-version = "1.60"
version = "0.74.1"
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/{ version }/{ name }-{ version }-{ target }.{ archive-format }"
pkg-fmt = "tgz"
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-fmt = "zip"
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[workspace]
members = [
"crates/nu-cli",
"crates/nu-engine",
"crates/nu-parser",
"crates/nu-system",
"crates/nu-command",
"crates/nu-protocol",
"crates/nu-plugin",
"crates/nu_plugin_inc",
"crates/nu_plugin_gstat",
"crates/nu_plugin_example",
"crates/nu_plugin_query",
"crates/nu_plugin_custom_values",
"crates/nu-utils",
]
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[dependencies]
chrono = { version = "0.4.23", features = ["serde"] }
crossterm = "0.24.0"
ctrlc = "3.2.1"
log = "0.4"
miette = { version = "5.5.0", features = ["fancy-no-backtrace"] }
nu-ansi-term = "0.46.0"
nu-cli = { path = "./crates/nu-cli", version = "0.74.1" }
nu-engine = { path = "./crates/nu-engine", version = "0.74.1" }
reedline = { version = "0.14.0", features = ["bashisms", "sqlite"] }
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
rayon = "1.6.1"
is_executable = "1.0.1"
simplelog = "0.12.0"
time = "0.3.12"
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[target.'cfg(not(target_os = "windows"))'.dependencies]
# Our dependencies don't use OpenSSL on Windows
openssl = { version = "0.10.38", features = ["vendored"], optional = true }
signal-hook = { version = "0.3.14", default-features = false }
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[target.'cfg(windows)'.build-dependencies]
winres = "0.1"
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[target.'cfg(target_family = "unix")'.dependencies]
nix = { version = "0.25", default-features = false, features = ["signal", "process", "fs", "term"] }
atty = "0.2"
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[dev-dependencies]
nu-test-support = { path = "./crates/nu-test-support", version = "0.74.1" }
tempfile = "3.2.0"
assert_cmd = "2.0.2"
criterion = "0.4"
pretty_assertions = "1.0.0"
serial_test = "0.10.0"
hamcrest2 = "0.3.0"
rstest = { version = "0.15.0", default-features = false }
itertools = "0.10.3"
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
[features]
plugin = [
"nu-plugin",
"nu-cli/plugin",
"nu-parser/plugin",
"nu-command/plugin",
"nu-protocol/plugin",
"nu-engine/plugin",
]
# extra used to be more useful but now it's the same as default. Leaving it in for backcompat with existing build scripts
extra = ["default"]
default = ["plugin", "which-support", "trash-support", "sqlite"]
stable = ["default"]
wasi = []
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
# Enable to statically link OpenSSL; otherwise the system version will be used. Not enabled by default because it takes a while to build
static-link-openssl = ["dep:openssl"]
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
# Stable (Default)
which-support = ["nu-command/which-support"]
trash-support = ["nu-command/trash-support"]
# Main nu binary
[[bin]]
name = "nu"
path = "src/main.rs"
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
# To use a development version of a dependency please use a global override here
# changing versions in each sub-crate of the workspace is tedious
[patch.crates-io]
reedline = { git = "https://github.com/nushell/reedline.git", branch = "main" }
clean up config by removing legacy options (#9496) # Description This PR cleans up the deprecated legacy config options that were deprecated in nushell version 0.72.0. These are the config points that were in the root of the config but also duplicated in the nested structures. For instance `use_ls_colors` was in the root of the config and also in the `ls.use_ls_colors` nested structure. This was originally done to preserve backwards compatibility when nested structures were introduced in the config file. Here's a list of the legacy config points that were removed. - `use_ls_colors` - previously replaced with `ls.use_ls_colors` - `rm_always_trash` - previously replaced with `rm.always_trash` - `history_file_format` - previously replaced with `history.file_format` - `sync_history_on_enter` - previously replaced with `history.sync_on_enter` - `max_history_size` - previously replaced with `history.max_size` - `quick_completions` - previously replaced with `completions.quick` - `partial_completions` - previously replaced with `completions.partial` - `max_external_completion_results` - previously replaced with `completions.external.max_results` - `completion_algorithm` - previously replaced with `completions.algorithm` - `case_sensitive_completions` - previously replaced with `completions.case_sensitive` - `enable_external_completion` - previously replaced with `completions.external.enable` - `external_completer` - previously replaced with `completions.external.completer` - `table_mode` - previously replaced with `table.mode` - `table_index_mode` - previously replaced with `table.index_mode` - `table_trim` - previously replaced with `table.trim` - `show_clickable_links_in_ls` - previously replaced with `ls.clickable_links` - `cd_with_abbreviations` - previously replaced with `cd.abbreviations` - `filesize_metric` - previously replaced with `filesize.metric` - `filesize_format` - previously replaced with `filesize.format` - `cursor_shape_vi_insert` - previously replaced with `cursor_shape.vi_insert` - `cursor_shape_vi_normal` - previously replaced with `cursor_shape.vi_normal` - `cursor_shape_emacs` - previously replaced with `cursor_shape.emacs` Removes log_level from the config since it doesn't do anything any longer. We moved log-level to a nushell parameter some time ago. Renames history_isolation to isolation in the config.nu for consistency. Fixes a couple bugs where values weren't being set in the "// Reconstruct" sections (history_isolation, table_show_empty). Reorganized/Moved things around a tiny bit and added a few comments. # User-Facing Changes history.histor_isolation is now history.isolation. If anyone is still using the legacy config points, deprecated since 0.72.0 2022-11-29, their config will break. # Tests + Formatting <!-- Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect -A clippy::result_large_err` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass - `cargo run -- crates/nu-std/tests/run.nu` to run the tests for the standard library > **Note** > from `nushell` you can also use the `toolkit` as follows > ```bash > use toolkit.nu # or use an `env_change` hook to activate it automatically > toolkit check pr > ``` --> # After Submitting <!-- If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. -->
2023-06-23 13:17:10 +02:00
# Criterion benchmarking setup
# Run all benchmarks with `cargo bench`
# Run individual benchmarks like `cargo bench -- <regex>` e.g. `cargo bench -- parse`
[[bench]]
name = "benchmarks"
harness = false
"#,
)]);
let actual = nu!(
cwd: dirs.test(), pipeline(
"open sample.toml | table --collapse"
));
_print_lines(&actual.out, 80);
let expected = join_lines([
"╭──────────────────┬─────────┬─────────────────────────────────────────────────╮",
"│ bench │ harness │ name │",
"│ ├─────────┼─────────────────────────────────────────────────┤",
"│ │ false │ benchmarks │",
"├──────────────────┼──────┬──┴─────────────────────────────────────────────────┤",
"│ bin │ name │ path │",
"│ ├──────┼────────────────────────────────────────────────────┤",
"│ │ nu │ src/main.rs │",
"├──────────────────┼──────┴────────┬──────────┬────────────────────────────────┤",
"│ dependencies │ chrono │ features │ serde │",
"│ │ ├──────────┼────────────────────────────────┤",
"│ │ │ version │ 0.4.23 │",
"│ ├───────────────┼──────────┴────────────────────────────────┤",
"│ │ crossterm │ 0.24.0 │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ ctrlc │ 3.2.1 │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ is_executable │ 1.0.1 │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ log │ 0.4 │",
"│ ├───────────────┼──────────┬────────────────────────────────┤",
"│ │ miette │ features │ fancy-no-backtrace │",
"│ │ ├──────────┼────────────────────────────────┤",
"│ │ │ version │ 5.5.0 │",
"│ ├───────────────┼──────────┴────────────────────────────────┤",
"│ │ nu-ansi-term │ 0.46.0 │",
"│ ├───────────────┼─────────┬─────────────────────────────────┤",
"│ │ nu-cli │ path │ ./crates/nu-cli │",
"│ │ ├─────────┼─────────────────────────────────┤",
"│ │ │ version │ 0.74.1 │",
"│ ├───────────────┼─────────┼─────────────────────────────────┤",
"│ │ nu-engine │ path │ ./crates/nu-engine │",
"│ │ ├─────────┼─────────────────────────────────┤",
"│ │ │ version │ 0.74.1 │",
"│ ├───────────────┼─────────┴─────────────────────────────────┤",
"│ │ rayon │ 1.6.1 │",
"│ ├───────────────┼──────────┬────────────────────────────────┤",
"│ │ reedline │ features │ bashisms │",
"│ │ │ ├────────────────────────────────┤",
"│ │ │ │ sqlite │",
"│ │ ├──────────┼────────────────────────────────┤",
"│ │ │ version │ 0.14.0 │",
"│ ├───────────────┼──────────┴────────────────────────────────┤",
"│ │ simplelog │ 0.12.0 │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ time │ 0.3.12 │",
"├──────────────────┼───────────────┴───┬───────────────────────────────────────┤",
"│ dev-dependencies │ assert_cmd │ 2.0.2 │",
"│ ├───────────────────┼───────────────────────────────────────┤",
"│ │ criterion │ 0.4 │",
"│ ├───────────────────┼───────────────────────────────────────┤",
"│ │ hamcrest2 │ 0.3.0 │",
"│ ├───────────────────┼───────────────────────────────────────┤",
"│ │ itertools │ 0.10.3 │",
"│ ├───────────────────┼─────────┬─────────────────────────────┤",
"│ │ nu-test-support │ path │ ./crates/nu-test-support │",
"│ │ ├─────────┼─────────────────────────────┤",
"│ │ │ version │ 0.74.1 │",
"│ ├───────────────────┼─────────┴─────────────────────────────┤",
"│ │ pretty_assertions │ 1.0.0 │",
"│ ├───────────────────┼──────────────────┬────────────────────┤",
"│ │ rstest │ default-features │ false │",
"│ │ ├──────────────────┼────────────────────┤",
"│ │ │ version │ 0.15.0 │",
"│ ├───────────────────┼──────────────────┴────────────────────┤",
"│ │ serial_test │ 0.10.0 │",
"│ ├───────────────────┼───────────────────────────────────────┤",
"│ │ tempfile │ 3.2.0 │",
"├──────────────────┼───────────────────┴─┬─────────────────────────────────────┤",
"│ features │ default │ plugin │",
"│ │ ├─────────────────────────────────────┤",
"│ │ │ which-support │",
"│ │ ├─────────────────────────────────────┤",
"│ │ │ trash-support │",
"│ │ ├─────────────────────────────────────┤",
"│ │ │ sqlite │",
"│ ├─────────────────────┼─────────────────────────────────────┤",
"│ │ extra │ default │",
"│ ├─────────────────────┼─────────────────────────────────────┤",
"│ │ plugin │ nu-plugin │",
"│ │ ├─────────────────────────────────────┤",
"│ │ │ nu-cli/plugin │",
"│ │ ├─────────────────────────────────────┤",
"│ │ │ nu-parser/plugin │",
"│ │ ├─────────────────────────────────────┤",
"│ │ │ nu-command/plugin │",
"│ │ ├─────────────────────────────────────┤",
"│ │ │ nu-protocol/plugin │",
"│ │ ├─────────────────────────────────────┤",
"│ │ │ nu-engine/plugin │",
"│ ├─────────────────────┼─────────────────────────────────────┤",
"│ │ stable │ default │",
"│ ├─────────────────────┼─────────────────────────────────────┤",
"│ │ static-link-openssl │ dep:openssl │",
"│ ├─────────────────────┼─────────────────────────────────────┤",
"│ │ trash-support │ nu-command/trash-support │",
"│ ├─────────────────────┼─────────────────────────────────────┤",
"│ │ wasi │ │",
"│ ├─────────────────────┼─────────────────────────────────────┤",
"│ │ which-support │ nu-command/which-support │",
"├──────────────────┼───────────────┬─────┴─────────────────────────────────────┤",
"│ package │ authors │ The Nushell Project Developers │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ default-run │ nu │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ description │ A new type of shell │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ documentation │ https://www.nushell.sh/book/ │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ edition │ 2021 │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ exclude │ images │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ homepage │ https://www.nushell.sh │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ license │ MIT │",
"│ ├───────────────┼──────────┬───────────┬────────────────────┤",
"│ │ metadata │ binstall │ overrides │ ... │",
"│ │ │ ├───────────┼────────────────────┤",
"│ │ │ │ pkg-fmt │ tgz │",
"│ │ │ ├───────────┼────────────────────┤",
"│ │ │ │ pkg-url │ { repo }/releases/ │",
"│ │ │ │ │ download/{ v │",
"│ │ │ │ │ ersion │",
"│ │ │ │ │ }/{ name }-{ vers │",
"│ │ │ │ │ ion }- │",
"│ │ │ │ │ { target }.{ │",
"│ │ │ │ │ archive-format } │",
"│ ├───────────────┼──────────┴───────────┴────────────────────┤",
"│ │ name │ nu │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ repository │ https://github.com/nushell/nushell │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ rust-version │ 1.60 │",
"│ ├───────────────┼───────────────────────────────────────────┤",
"│ │ version │ 0.74.1 │",
"├──────────────────┼───────────┬───┴──────┬────────┬───────────────────────────┤",
"│ patch │ crates-io │ reedline │ branch │ main │",
"│ │ │ ├────────┼───────────────────────────┤",
"│ │ │ │ git │ https://github.com/nushel │",
"│ │ │ │ │ l/reedline.git │",
"├──────────────────┼───────────┴──────────┴────────┴─┬──────────────┬──────────┤",
"│ target │ cfg(not(target_os = \"windows\")) │ dependencies │ ... │",
"│ │ │ ├──────────┤",
"│ │ │ │ ... │",
"│ ├─────────────────────────────────┼──────────────┼──────────┤",
"│ │ cfg(target_family = \"unix\") │ dependencies │ ... │",
"│ │ │ ├──────────┤",
"│ │ │ │ ... │",
"│ ├─────────────────────────────────┼──────────────┴──────────┤",
"│ │ cfg(windows) │ ... │",
"├──────────────────┼─────────┬───────────────────────┴─────────────────────────┤",
"│ workspace │ members │ crates/nu-cli │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu-engine │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu-parser │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu-system │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu-command │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu-protocol │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu-plugin │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_inc │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_gstat │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_example │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_query │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_custom_values │",
"│ │ ├─────────────────────────────────────────────────┤",
"│ │ │ crates/nu-utils │",
"╰──────────────────┴─────────┴─────────────────────────────────────────────────╯",
]);
assert_eq!(actual.out, expected);
let actual = nu!(
cwd: dirs.test(), pipeline(
"open sample.toml | table --collapse --width=160"
));
_print_lines(&actual.out, 111);
let expected = join_lines([
"╭──────────────────┬─────────┬────────────────────────────────────────────────────────────────────────────────╮",
"│ bench │ harness │ name │",
"│ ├─────────┼────────────────────────────────────────────────────────────────────────────────┤",
"│ │ false │ benchmarks │",
"├──────────────────┼──────┬──┴────────────────────────────────────────────────────────────────────────────────┤",
"│ bin │ name │ path │",
"│ ├──────┼───────────────────────────────────────────────────────────────────────────────────┤",
"│ │ nu │ src/main.rs │",
"├──────────────────┼──────┴────────┬──────────┬───────────────────────────────────────────────────────────────┤",
"│ dependencies │ chrono │ features │ serde │",
"│ │ ├──────────┼───────────────────────────────────────────────────────────────┤",
"│ │ │ version │ 0.4.23 │",
"│ ├───────────────┼──────────┴───────────────────────────────────────────────────────────────┤",
"│ │ crossterm │ 0.24.0 │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ ctrlc │ 3.2.1 │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ is_executable │ 1.0.1 │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ log │ 0.4 │",
"│ ├───────────────┼──────────┬───────────────────────────────────────────────────────────────┤",
"│ │ miette │ features │ fancy-no-backtrace │",
"│ │ ├──────────┼───────────────────────────────────────────────────────────────┤",
"│ │ │ version │ 5.5.0 │",
"│ ├───────────────┼──────────┴───────────────────────────────────────────────────────────────┤",
"│ │ nu-ansi-term │ 0.46.0 │",
"│ ├───────────────┼─────────┬────────────────────────────────────────────────────────────────┤",
"│ │ nu-cli │ path │ ./crates/nu-cli │",
"│ │ ├─────────┼────────────────────────────────────────────────────────────────┤",
"│ │ │ version │ 0.74.1 │",
"│ ├───────────────┼─────────┼────────────────────────────────────────────────────────────────┤",
"│ │ nu-engine │ path │ ./crates/nu-engine │",
"│ │ ├─────────┼────────────────────────────────────────────────────────────────┤",
"│ │ │ version │ 0.74.1 │",
"│ ├───────────────┼─────────┴────────────────────────────────────────────────────────────────┤",
"│ │ rayon │ 1.6.1 │",
"│ ├───────────────┼──────────┬───────────────────────────────────────────────────────────────┤",
"│ │ reedline │ features │ bashisms │",
"│ │ │ ├───────────────────────────────────────────────────────────────┤",
"│ │ │ │ sqlite │",
"│ │ ├──────────┼───────────────────────────────────────────────────────────────┤",
"│ │ │ version │ 0.14.0 │",
"│ ├───────────────┼──────────┴───────────────────────────────────────────────────────────────┤",
"│ │ simplelog │ 0.12.0 │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ time │ 0.3.12 │",
"├──────────────────┼───────────────┴───┬──────────────────────────────────────────────────────────────────────┤",
"│ dev-dependencies │ assert_cmd │ 2.0.2 │",
"│ ├───────────────────┼──────────────────────────────────────────────────────────────────────┤",
"│ │ criterion │ 0.4 │",
"│ ├───────────────────┼──────────────────────────────────────────────────────────────────────┤",
"│ │ hamcrest2 │ 0.3.0 │",
"│ ├───────────────────┼──────────────────────────────────────────────────────────────────────┤",
"│ │ itertools │ 0.10.3 │",
"│ ├───────────────────┼─────────┬────────────────────────────────────────────────────────────┤",
"│ │ nu-test-support │ path │ ./crates/nu-test-support │",
"│ │ ├─────────┼────────────────────────────────────────────────────────────┤",
"│ │ │ version │ 0.74.1 │",
"│ ├───────────────────┼─────────┴────────────────────────────────────────────────────────────┤",
"│ │ pretty_assertions │ 1.0.0 │",
"│ ├───────────────────┼──────────────────┬───────────────────────────────────────────────────┤",
"│ │ rstest │ default-features │ false │",
"│ │ ├──────────────────┼───────────────────────────────────────────────────┤",
"│ │ │ version │ 0.15.0 │",
"│ ├───────────────────┼──────────────────┴───────────────────────────────────────────────────┤",
"│ │ serial_test │ 0.10.0 │",
"│ ├───────────────────┼──────────────────────────────────────────────────────────────────────┤",
"│ │ tempfile │ 3.2.0 │",
"├──────────────────┼───────────────────┴─┬────────────────────────────────────────────────────────────────────┤",
"│ features │ default │ plugin │",
"│ │ ├────────────────────────────────────────────────────────────────────┤",
"│ │ │ which-support │",
"│ │ ├────────────────────────────────────────────────────────────────────┤",
"│ │ │ trash-support │",
"│ │ ├────────────────────────────────────────────────────────────────────┤",
"│ │ │ sqlite │",
"│ ├─────────────────────┼────────────────────────────────────────────────────────────────────┤",
"│ │ extra │ default │",
"│ ├─────────────────────┼────────────────────────────────────────────────────────────────────┤",
"│ │ plugin │ nu-plugin │",
"│ │ ├────────────────────────────────────────────────────────────────────┤",
"│ │ │ nu-cli/plugin │",
"│ │ ├────────────────────────────────────────────────────────────────────┤",
"│ │ │ nu-parser/plugin │",
"│ │ ├────────────────────────────────────────────────────────────────────┤",
"│ │ │ nu-command/plugin │",
"│ │ ├────────────────────────────────────────────────────────────────────┤",
"│ │ │ nu-protocol/plugin │",
"│ │ ├────────────────────────────────────────────────────────────────────┤",
"│ │ │ nu-engine/plugin │",
"│ ├─────────────────────┼────────────────────────────────────────────────────────────────────┤",
"│ │ stable │ default │",
"│ ├─────────────────────┼────────────────────────────────────────────────────────────────────┤",
"│ │ static-link-openssl │ dep:openssl │",
"│ ├─────────────────────┼────────────────────────────────────────────────────────────────────┤",
"│ │ trash-support │ nu-command/trash-support │",
"│ ├─────────────────────┼────────────────────────────────────────────────────────────────────┤",
"│ │ wasi │ │",
"│ ├─────────────────────┼────────────────────────────────────────────────────────────────────┤",
"│ │ which-support │ nu-command/which-support │",
"├──────────────────┼───────────────┬─────┴────────────────────────────────────────────────────────────────────┤",
"│ package │ authors │ The Nushell Project Developers │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ default-run │ nu │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ description │ A new type of shell │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ documentation │ https://www.nushell.sh/book/ │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ edition │ 2021 │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ exclude │ images │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ homepage │ https://www.nushell.sh │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ license │ MIT │",
"│ ├───────────────┼──────────┬───────────┬────────────────────────┬─────────┬────────────────┤",
"│ │ metadata │ binstall │ overrides │ x86_64-pc-windows-msvc │ pkg-fmt │ zip │",
"│ │ │ ├───────────┼────────────────────────┴─────────┴────────────────┤",
"│ │ │ │ pkg-fmt │ tgz │",
"│ │ │ ├───────────┼───────────────────────────────────────────────────┤",
"│ │ │ │ pkg-url │ { repo }/releases/download/{ v │",
"│ │ │ │ │ ersion }/{ name }-{ version }- │",
"│ │ │ │ │ { target }.{ archive-format } │",
"│ ├───────────────┼──────────┴───────────┴───────────────────────────────────────────────────┤",
"│ │ name │ nu │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ repository │ https://github.com/nushell/nushell │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ rust-version │ 1.60 │",
"│ ├───────────────┼──────────────────────────────────────────────────────────────────────────┤",
"│ │ version │ 0.74.1 │",
"├──────────────────┼───────────┬───┴──────┬────────┬──────────────────────────────────────────────────────────┤",
"│ patch │ crates-io │ reedline │ branch │ main │",
"│ │ │ ├────────┼──────────────────────────────────────────────────────────┤",
"│ │ │ │ git │ https://github.com/nushell/reedline.git │",
"├──────────────────┼───────────┴──────────┴────────┴─┬──────────────┬─────────────┬──────────┬────────────────┤",
"│ target │ cfg(not(target_os = \"windows\")) │ dependencies │ openssl │ features │ vendored │",
"│ │ │ │ ├──────────┼────────────────┤",
"│ │ │ │ │ optional │ true │",
"│ │ │ │ ├──────────┼────────────────┤",
"│ │ │ │ │ version │ 0.10.38 │",
"│ │ │ ├─────────────┼──────────┴───────┬────────┤",
"│ │ │ │ signal-hook │ default-features │ false │",
"│ │ │ │ ├──────────────────┼────────┤",
"│ │ │ │ │ version │ 0.3.14 │",
"│ ├─────────────────────────────────┼──────────────┼──────┬──────┴──────────────────┴────────┤",
"│ │ cfg(target_family = \"unix\") │ dependencies │ atty │ 0.2 │",
"│ │ │ ├──────┼──────────────────┬───────────────┤",
"│ │ │ │ nix │ default-features │ false │",
"│ │ │ │ ├──────────────────┼───────────────┤",
"│ │ │ │ │ features │ signal │",
"│ │ │ │ │ ├───────────────┤",
"│ │ │ │ │ │ process │",
"│ │ │ │ │ ├───────────────┤",
"│ │ │ │ │ │ fs │",
"│ │ │ │ │ ├───────────────┤",
"│ │ │ │ │ │ term │",
"│ │ │ │ ├──────────────────┼───────────────┤",
"│ │ │ │ │ version │ 0.25 │",
"│ ├─────────────────────────────────┼──────────────┴─────┬┴───────┬──────────┴───────────────┤",
"│ │ cfg(windows) │ build-dependencies │ winres │ 0.1 │",
"├──────────────────┼─────────┬───────────────────────┴────────────────────┴────────┴──────────────────────────┤",
"│ workspace │ members │ crates/nu-cli │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu-engine │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu-parser │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu-system │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu-command │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu-protocol │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu-plugin │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_inc │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_gstat │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_example │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_query │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu_plugin_custom_values │",
"│ │ ├────────────────────────────────────────────────────────────────────────────────┤",
"│ │ │ crates/nu-utils │",
"╰──────────────────┴─────────┴────────────────────────────────────────────────────────────────────────────────╯",
]);
assert_eq!(actual.out, expected);
})
}
fn join_lines(lines: impl IntoIterator<Item = impl AsRef<str>>) -> String {
lines
.into_iter()
.map(|s| s.as_ref().to_string())
.collect::<Vec<_>>()
.join("")
}
// util function to easier copy && paste
#[allow(dead_code)]
fn _print_lines(s: &str, w: usize) {
eprintln!("{:#?}", _split_str_by_width(s, w));
}
// util function to easier copy && paste
// todo: make UTF-8 friendly
fn _split_str_by_width(s: &str, w: usize) -> Vec<String> {
let mut lines = vec![];
let mut line = String::new();
let mut i = 0;
for c in s.chars() {
if i < w {
i += 1;
line.push(c);
} else {
lines.push(line);
line = String::new();
line.push(c);
i = 1;
}
}
lines.push(line);
lines
}
#[test]
fn table_expand_index_offset() {
let actual = nu!(r#"1..1002 | table --expand"#);
let suffix = "╭──────┬──────╮│ 1000 │ 1001 ││ 1001 │ 1002 │╰──────┴──────╯";
let expected_suffix = actual.out.strip_suffix(suffix);
assert!(expected_suffix.is_some(), "{:?}", actual.out);
}
#[test]
fn table_index_offset() {
let actual = nu!(r#"1..1002 | table"#);
let suffix = "╭──────┬──────╮│ 1000 │ 1001 ││ 1001 │ 1002 │╰──────┴──────╯";
let expected_suffix = actual.out.strip_suffix(suffix);
assert!(expected_suffix.is_some(), "{:?}", actual.out);
}