mirror of
https://github.com/nushell/nushell
synced 2024-12-26 13:03:07 +00:00
commit
4edc7422cd
35 changed files with 162 additions and 203 deletions
|
@ -20,6 +20,9 @@ steps:
|
|||
export PATH=$HOME/.cargo/bin:$PATH
|
||||
rustc -Vv
|
||||
echo "##vso[task.prependpath]$HOME/.cargo/bin"
|
||||
rustup component add rustfmt --toolchain `cat rust-toolchain`
|
||||
displayName: Install Rust
|
||||
- bash: RUSTFLAGS="-D warnings" cargo test --all-features
|
||||
displayName: Run tests
|
||||
- bash: cargo fmt --all -- --check
|
||||
displayName: Lint
|
||||
|
|
|
@ -10,8 +10,7 @@ impl WholeStreamCommand for CD {
|
|||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("cd")
|
||||
.optional("directory", SyntaxType::Path)
|
||||
Signature::build("cd").optional("directory", SyntaxType::Path)
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use crate::errors::ShellError;
|
||||
use crate::data::{Dictionary, Value};
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
use chrono::{DateTime, Local, Utc};
|
||||
|
||||
|
|
|
@ -11,8 +11,7 @@ impl WholeStreamCommand for Exit {
|
|||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("exit")
|
||||
.switch("now")
|
||||
Signature::build("exit").switch("now")
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
|
|
|
@ -16,8 +16,7 @@ impl WholeStreamCommand for First {
|
|||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("first")
|
||||
.required("amount", SyntaxType::Literal)
|
||||
Signature::build("first").required("amount", SyntaxType::Literal)
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ExpectedRange;
|
||||
use crate::data::{Primitive, TaggedDictBuilder, Value};
|
||||
use crate::errors::ExpectedRange;
|
||||
use crate::prelude::*;
|
||||
use bson::{decode_document, spec::BinarySubtype, Bson};
|
||||
use std::str::FromStr;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::Value;
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
|
||||
pub struct Get;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::commands::command::CommandAction;
|
||||
use crate::commands::PerItemCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::{command_dict, TaggedDictBuilder};
|
||||
use crate::errors::ShellError;
|
||||
use crate::parser::registry;
|
||||
use crate::prelude::*;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::{Primitive, Value};
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
use log::trace;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::context::CommandRegistry;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::base::select_fields;
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::commands::UnevaluatedCallInfo;
|
||||
use crate::context::SpanSource;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::Value;
|
||||
use crate::errors::ShellError;
|
||||
use crate::parser::hir::SyntaxType;
|
||||
use crate::parser::registry::Signature;
|
||||
use crate::prelude::*;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::base::reject_fields;
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::{UnevaluatedCallInfo, WholeStreamCommand};
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::Value;
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::TaggedDictBuilder;
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
|
||||
pub struct Shells;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::{TaggedDictBuilder, Value};
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
|
||||
pub struct Size;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::{Primitive, TaggedDictBuilder, Value};
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
use log::trace;
|
||||
|
||||
|
@ -40,7 +40,11 @@ impl WholeStreamCommand for SplitColumn {
|
|||
}
|
||||
|
||||
fn split_column(
|
||||
SplitColumnArgs { separator, rest, collapse_empty}: SplitColumnArgs,
|
||||
SplitColumnArgs {
|
||||
separator,
|
||||
rest,
|
||||
collapse_empty,
|
||||
}: SplitColumnArgs,
|
||||
RunnableContext { input, name, .. }: RunnableContext,
|
||||
) -> Result<OutputStream, ShellError> {
|
||||
Ok(input
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::{Primitive, Value};
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
use log::trace;
|
||||
|
||||
|
@ -17,8 +17,7 @@ impl WholeStreamCommand for SplitRow {
|
|||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("split-row")
|
||||
.required("separator", SyntaxType::Any)
|
||||
Signature::build("split-row").required("separator", SyntaxType::Any)
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::{TaggedDictBuilder, Value};
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
|
||||
pub struct Tags;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::Value;
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
|
||||
pub struct Trim;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::commands::WholeStreamCommand;
|
||||
use crate::errors::ShellError;
|
||||
use crate::data::{Dictionary, Value};
|
||||
use crate::errors::ShellError;
|
||||
use crate::parser::registry::Signature;
|
||||
use crate::prelude::*;
|
||||
use indexmap::IndexMap;
|
||||
|
|
|
@ -12,8 +12,7 @@ impl PerItemCommand for Where {
|
|||
}
|
||||
|
||||
fn signature(&self) -> registry::Signature {
|
||||
Signature::build("where")
|
||||
.required("condition", SyntaxType::Block)
|
||||
Signature::build("where").required("condition", SyntaxType::Block)
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
|
@ -43,9 +42,7 @@ impl PerItemCommand for Where {
|
|||
VecDeque::new()
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
return Err(e)
|
||||
}
|
||||
Err(e) => return Err(e),
|
||||
}
|
||||
}
|
||||
Tagged { tag, .. } => {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use crate::errors::ShellError;
|
||||
use crate::data::Value;
|
||||
use crate::errors::ShellError;
|
||||
use crate::prelude::*;
|
||||
|
||||
use crate::commands::WholeStreamCommand;
|
||||
|
@ -13,8 +13,7 @@ impl WholeStreamCommand for Which {
|
|||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("which")
|
||||
.required("name", SyntaxType::Any)
|
||||
Signature::build("which").required("name", SyntaxType::Any)
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
|
|
|
@ -28,8 +28,8 @@ pub use crate::parser::parse::token_tree_builder::TokenTreeBuilder;
|
|||
pub use crate::plugin::{serve_plugin, Plugin};
|
||||
pub use crate::utils::{AbsoluteFile, AbsolutePath, RelativePath};
|
||||
pub use cli::cli;
|
||||
pub use data::config::{APP_INFO, config_path};
|
||||
pub use data::base::{Primitive, Value};
|
||||
pub use data::config::{config_path, APP_INFO};
|
||||
pub use data::dict::{Dictionary, TaggedDictBuilder};
|
||||
pub use data::meta::{Span, Tag, Tagged, TaggedItem};
|
||||
pub use errors::{CoerceInto, ShellError};
|
||||
|
|
|
@ -20,7 +20,6 @@ impl ToDebug for Operator {
|
|||
}
|
||||
|
||||
impl Operator {
|
||||
|
||||
pub fn print(&self) -> String {
|
||||
self.as_str().to_string()
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ impl Skip {
|
|||
|
||||
impl Plugin for Skip {
|
||||
fn config(&mut self) -> Result<Signature, ShellError> {
|
||||
Ok(Signature::build("skip")
|
||||
Ok(Signature::build("skip")
|
||||
.desc("Skip a number of rows")
|
||||
.rest(SyntaxType::Number)
|
||||
.filter())
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
pub(crate) mod completer;
|
||||
pub(crate) mod filesystem_shell;
|
||||
pub(crate) mod help_shell;
|
||||
pub(crate) mod helper;
|
||||
pub(crate) mod shell;
|
||||
pub(crate) mod shell_manager;
|
||||
pub(crate) mod value_shell;
|
||||
pub(crate) mod help_shell;
|
||||
|
||||
pub(crate) use helper::Helper;
|
||||
|
|
|
@ -207,8 +207,7 @@ impl Shell for FilesystemShell {
|
|||
|
||||
let mut stream = VecDeque::new();
|
||||
|
||||
stream.push_back(
|
||||
ReturnSuccess::change_cwd(
|
||||
stream.push_back(ReturnSuccess::change_cwd(
|
||||
path.to_string_lossy().to_string(),
|
||||
));
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ fn filesystem_change_from_current_directory_using_absolute_path() {
|
|||
);
|
||||
|
||||
assert_eq!(PathBuf::from(actual), dirs.formats());
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -113,29 +113,30 @@ fn filesystem_change_to_a_directory_containing_spaces() {
|
|||
"#
|
||||
);
|
||||
|
||||
assert_eq!(PathBuf::from(actual), dirs.test().join("robalino turner katz"));
|
||||
assert_eq!(
|
||||
PathBuf::from(actual),
|
||||
dirs.test().join("robalino turner katz")
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn filesystem_directory_not_found() {
|
||||
let actual = nu_error!(
|
||||
cwd: "tests/fixtures",
|
||||
"cd dir_that_does_not_exist"
|
||||
cwd: "tests/fixtures",
|
||||
"cd dir_that_does_not_exist"
|
||||
);
|
||||
|
||||
assert!(actual.contains("dir_that_does_not_exist"));
|
||||
assert!(actual.contains("directory not found"));
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn valuesystem_change_from_current_path_using_relative_path() {
|
||||
Playground::setup("cd_test_8", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[[bin]]
|
||||
path = "src/plugins/turner.rs"
|
||||
|
||||
|
@ -144,7 +145,7 @@ fn valuesystem_change_from_current_path_using_relative_path() {
|
|||
|
||||
[[bin]]
|
||||
path = "src/plugins/katz.rs"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -164,10 +165,9 @@ fn valuesystem_change_from_current_path_using_relative_path() {
|
|||
#[test]
|
||||
fn valuesystem_change_from_current_path_using_absolute_path() {
|
||||
Playground::setup("cd_test_9", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[dependencies]
|
||||
turner-ts = "0.1.1"
|
||||
robalino-tkd = "0.0.1"
|
||||
|
@ -178,7 +178,7 @@ fn valuesystem_change_from_current_path_using_absolute_path() {
|
|||
|
||||
[[bin]]
|
||||
path = "src/plugins/bbq.rs"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -193,16 +193,15 @@ fn valuesystem_change_from_current_path_using_absolute_path() {
|
|||
);
|
||||
|
||||
assert_eq!(PathBuf::from(actual), PathBuf::from("/dependencies"));
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn valuesystem_switch_back_to_previous_working_path() {
|
||||
Playground::setup("cd_test_10", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[dependencies]
|
||||
turner-ts = "0.1.1"
|
||||
robalino-tkd = "0.0.1"
|
||||
|
@ -214,7 +213,7 @@ fn valuesystem_switch_back_to_previous_working_path() {
|
|||
|
||||
[[bin]]
|
||||
path = "src/plugins/bbq.rs"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -267,7 +266,6 @@ fn valuesystem_change_from_current_path_using_relative_path_and_dash() {
|
|||
})
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn valuesystem_change_current_path_to_parent_path() {
|
||||
Playground::setup("cd_test_12", |dirs, sandbox| {
|
||||
|
@ -298,13 +296,12 @@ fn valuesystem_change_current_path_to_parent_path() {
|
|||
#[test]
|
||||
fn valuesystem_change_to_home_directory() {
|
||||
Playground::setup("cd_test_13", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[paquete]
|
||||
el = "pollo loco"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -325,13 +322,12 @@ fn valuesystem_change_to_home_directory() {
|
|||
#[test]
|
||||
fn valuesystem_change_to_a_path_containing_spaces() {
|
||||
Playground::setup("cd_test_14", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
["pa que te"]
|
||||
el = "pollo loco"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
|
|
@ -7,25 +7,23 @@ use std::path::PathBuf;
|
|||
|
||||
#[test]
|
||||
fn has_default_configuration_file() {
|
||||
let expected = "config.toml";
|
||||
let expected = "config.toml";
|
||||
|
||||
Playground::setup("config_test_1", |dirs, _| {
|
||||
|
||||
nu!(cwd: dirs.root(), "config");
|
||||
|
||||
assert_eq!(
|
||||
dirs.config_path().join(expected),
|
||||
nu::config_path().unwrap().join(expected)
|
||||
dirs.config_path().join(expected),
|
||||
nu::config_path().unwrap().join(expected)
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn shows_path_of_configuration_file() {
|
||||
let expected = "config.toml";
|
||||
let expected = "config.toml";
|
||||
|
||||
Playground::setup("config_test_2", |dirs, _| {
|
||||
|
||||
let actual = nu!(
|
||||
cwd: dirs.test(),
|
||||
"config --path | echo $it"
|
||||
|
@ -38,14 +36,13 @@ fn shows_path_of_configuration_file() {
|
|||
#[test]
|
||||
fn use_different_configuration() {
|
||||
Playground::setup("config_test_3", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"test_3.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"test_3.toml",
|
||||
r#"
|
||||
caballero_1 = "Andrés N. Robalino"
|
||||
caballero_2 = "Jonathan Turner"
|
||||
caballero_3 = "Yehuda katz"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -57,20 +54,19 @@ fn use_different_configuration() {
|
|||
assert_eq!(actual, "Andrés N. Robalino");
|
||||
});
|
||||
|
||||
h::delete_file_at(nu::config_path().unwrap().join("test_3.toml"));
|
||||
h::delete_file_at(nu::config_path().unwrap().join("test_3.toml"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sets_configuration_value() {
|
||||
Playground::setup("config_test_4", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"test_4.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"test_4.toml",
|
||||
r#"
|
||||
caballero_1 = "Andrés N. Robalino"
|
||||
caballero_2 = "Jonathan Turner"
|
||||
caballero_3 = "Yehuda katz"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
nu!(
|
||||
|
@ -79,27 +75,26 @@ fn sets_configuration_value() {
|
|||
);
|
||||
|
||||
let actual = nu!(
|
||||
cwd: dirs.root(),
|
||||
r#"open "{}/test_4.toml" | get caballero_4 | echo $it"#,
|
||||
dirs.config_path()
|
||||
cwd: dirs.root(),
|
||||
r#"open "{}/test_4.toml" | get caballero_4 | echo $it"#,
|
||||
dirs.config_path()
|
||||
);
|
||||
|
||||
assert_eq!(actual, "jonas");
|
||||
});
|
||||
|
||||
h::delete_file_at(nu::config_path().unwrap().join("test_4.toml"));
|
||||
h::delete_file_at(nu::config_path().unwrap().join("test_4.toml"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn removes_configuration_value() {
|
||||
Playground::setup("config_test_5", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"test_5.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"test_5.toml",
|
||||
r#"
|
||||
caballeros = [1, 1, 1]
|
||||
podershell = [1, 1, 1]
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
nu!(
|
||||
|
@ -108,13 +103,13 @@ fn removes_configuration_value() {
|
|||
);
|
||||
|
||||
let actual = nu_error!(
|
||||
cwd: dirs.root(),
|
||||
r#"open "{}/test_5.toml" | get podershell | echo $it"#,
|
||||
dirs.config_path()
|
||||
cwd: dirs.root(),
|
||||
r#"open "{}/test_5.toml" | get podershell | echo $it"#,
|
||||
dirs.config_path()
|
||||
);
|
||||
|
||||
assert!(actual.contains("table missing column"));
|
||||
});
|
||||
|
||||
h::delete_file_at(nu::config_path().unwrap().join("test_5.toml"));
|
||||
}
|
||||
h::delete_file_at(nu::config_path().unwrap().join("test_5.toml"));
|
||||
}
|
||||
|
|
|
@ -6,11 +6,10 @@ use helpers::{Playground, Stub::*};
|
|||
#[test]
|
||||
fn ls_lists_regular_files() {
|
||||
Playground::setup("ls_test_1", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![
|
||||
EmptyFile("yehuda.10.txt"),
|
||||
EmptyFile("jonathan.10.txt"),
|
||||
EmptyFile("andres.10.txt"),
|
||||
sandbox.with_files(vec![
|
||||
EmptyFile("yehuda.10.txt"),
|
||||
EmptyFile("jonathan.10.txt"),
|
||||
EmptyFile("andres.10.txt"),
|
||||
]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -34,12 +33,11 @@ fn ls_lists_regular_files() {
|
|||
#[test]
|
||||
fn ls_lists_regular_files_using_asterisk_wildcard() {
|
||||
Playground::setup("ls_test_2", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![
|
||||
EmptyFile("los.1.txt"),
|
||||
EmptyFile("tres.1.txt"),
|
||||
EmptyFile("amigos.1.txt"),
|
||||
EmptyFile("arepas.1.clu"),
|
||||
sandbox.with_files(vec![
|
||||
EmptyFile("los.1.txt"),
|
||||
EmptyFile("tres.1.txt"),
|
||||
EmptyFile("amigos.1.txt"),
|
||||
EmptyFile("arepas.1.clu"),
|
||||
]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -63,12 +61,11 @@ fn ls_lists_regular_files_using_asterisk_wildcard() {
|
|||
#[test]
|
||||
fn ls_lists_regular_files_using_question_mark_wildcard() {
|
||||
Playground::setup("ls_test_3", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![
|
||||
EmptyFile("yehuda.10.txt"),
|
||||
EmptyFile("jonathan.10.txt"),
|
||||
EmptyFile("andres.10.txt"),
|
||||
EmptyFile("chicken_not_to_be_picked_up.100.txt"),
|
||||
sandbox.with_files(vec![
|
||||
EmptyFile("yehuda.10.txt"),
|
||||
EmptyFile("jonathan.10.txt"),
|
||||
EmptyFile("andres.10.txt"),
|
||||
EmptyFile("chicken_not_to_be_picked_up.100.txt"),
|
||||
]);
|
||||
|
||||
let actual = nu!(
|
||||
|
|
|
@ -26,11 +26,7 @@ fn moves_a_file() {
|
|||
#[test]
|
||||
fn overwrites_if_moving_to_existing_file() {
|
||||
Playground::setup("mv_test_2", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![
|
||||
EmptyFile("andres.txt"),
|
||||
EmptyFile("jonathan.txt")
|
||||
]);
|
||||
sandbox.with_files(vec![EmptyFile("andres.txt"), EmptyFile("jonathan.txt")]);
|
||||
|
||||
let original = dirs.test().join("andres.txt");
|
||||
let expected = dirs.test().join("jonathan.txt");
|
||||
|
@ -142,7 +138,7 @@ fn moves_using_path_with_wildcard() {
|
|||
EmptyFile("sgml_description.json"),
|
||||
EmptyFile("sample.ini"),
|
||||
EmptyFile("utf16.ini"),
|
||||
EmptyFile("yehuda.ini")
|
||||
EmptyFile("yehuda.ini"),
|
||||
])
|
||||
.mkdir("work_dir")
|
||||
.mkdir("expected");
|
||||
|
@ -150,10 +146,7 @@ fn moves_using_path_with_wildcard() {
|
|||
let work_dir = dirs.test().join("work_dir");
|
||||
let expected = dirs.test().join("expected");
|
||||
|
||||
nu!(
|
||||
cwd: work_dir,
|
||||
"mv ../originals/*.ini ../expected"
|
||||
);
|
||||
nu!(cwd: work_dir, "mv ../originals/*.ini ../expected");
|
||||
|
||||
assert!(h::files_exist_at(
|
||||
vec!["yehuda.ini", "jonathan.ini", "sample.ini", "andres.ini",],
|
||||
|
@ -170,7 +163,7 @@ fn moves_using_a_glob() {
|
|||
.with_files(vec![
|
||||
EmptyFile("arepa.txt"),
|
||||
EmptyFile("empanada.txt"),
|
||||
EmptyFile("taquiza.txt")
|
||||
EmptyFile("taquiza.txt"),
|
||||
])
|
||||
.mkdir("work_dir")
|
||||
.mkdir("expected");
|
||||
|
@ -179,10 +172,7 @@ fn moves_using_a_glob() {
|
|||
let work_dir = dirs.test().join("work_dir");
|
||||
let expected = dirs.test().join("expected");
|
||||
|
||||
nu!(
|
||||
cwd: work_dir,
|
||||
"mv ../meals/* ../expected"
|
||||
);
|
||||
nu!(cwd: work_dir, "mv ../meals/* ../expected");
|
||||
|
||||
assert!(meal_dir.exists());
|
||||
assert!(h::files_exist_at(
|
||||
|
|
|
@ -6,9 +6,7 @@ use helpers::{Playground, Stub::*};
|
|||
#[test]
|
||||
fn rm_removes_a_file() {
|
||||
Playground::setup("rm_test_1", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![EmptyFile("i_will_be_deleted.txt")
|
||||
]);
|
||||
sandbox.with_files(vec![EmptyFile("i_will_be_deleted.txt")]);
|
||||
|
||||
nu!(
|
||||
cwd: dirs.root(),
|
||||
|
@ -29,7 +27,7 @@ fn rm_removes_files_with_wildcard() {
|
|||
.with_files(vec![
|
||||
EmptyFile("cli.rs"),
|
||||
EmptyFile("lib.rs"),
|
||||
EmptyFile("prelude.rs")
|
||||
EmptyFile("prelude.rs"),
|
||||
])
|
||||
.within("src/parser")
|
||||
.with_files(vec![EmptyFile("parse.rs"), EmptyFile("parser.rs")])
|
||||
|
@ -38,8 +36,8 @@ fn rm_removes_files_with_wildcard() {
|
|||
.within("src/parser/hir")
|
||||
.with_files(vec![
|
||||
EmptyFile("baseline_parse.rs"),
|
||||
EmptyFile("baseline_parse_tokens.rs")
|
||||
]);
|
||||
EmptyFile("baseline_parse_tokens.rs"),
|
||||
]);
|
||||
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
|
@ -70,7 +68,7 @@ fn rm_removes_deeply_nested_directories_with_wildcard_and_recursive_flag() {
|
|||
.with_files(vec![
|
||||
EmptyFile("cli.rs"),
|
||||
EmptyFile("lib.rs"),
|
||||
EmptyFile("prelude.rs")
|
||||
EmptyFile("prelude.rs"),
|
||||
])
|
||||
.within("src/parser")
|
||||
.with_files(vec![EmptyFile("parse.rs"), EmptyFile("parser.rs")])
|
||||
|
@ -79,8 +77,8 @@ fn rm_removes_deeply_nested_directories_with_wildcard_and_recursive_flag() {
|
|||
.within("src/parser/hir")
|
||||
.with_files(vec![
|
||||
EmptyFile("baseline_parse.rs"),
|
||||
EmptyFile("baseline_parse_tokens.rs")
|
||||
]);
|
||||
EmptyFile("baseline_parse_tokens.rs"),
|
||||
]);
|
||||
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
|
@ -109,11 +107,10 @@ fn rm_removes_directory_contents_without_recursive_flag_if_empty() {
|
|||
#[test]
|
||||
fn rm_removes_directory_contents_with_recursive_flag() {
|
||||
Playground::setup("rm_test_5", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![
|
||||
EmptyFile("yehuda.txt"),
|
||||
EmptyFile("jonathan.txt"),
|
||||
EmptyFile("andres.txt")
|
||||
sandbox.with_files(vec![
|
||||
EmptyFile("yehuda.txt"),
|
||||
EmptyFile("jonathan.txt"),
|
||||
EmptyFile("andres.txt"),
|
||||
]);
|
||||
|
||||
nu!(
|
||||
|
@ -128,9 +125,7 @@ fn rm_removes_directory_contents_with_recursive_flag() {
|
|||
#[test]
|
||||
fn rm_errors_if_attempting_to_delete_a_directory_with_content_without_recursive_flag() {
|
||||
Playground::setup("rm_test_6", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![EmptyFile("some_empty_file.txt")
|
||||
]);
|
||||
sandbox.with_files(vec![EmptyFile("some_empty_file.txt")]);
|
||||
|
||||
let actual = nu_error!(
|
||||
cwd: dirs.root(),
|
||||
|
|
|
@ -3,8 +3,8 @@ mod helpers;
|
|||
#[test]
|
||||
fn external_command() {
|
||||
let actual = nu!(
|
||||
cwd: "tests/fixtures",
|
||||
"echo 1"
|
||||
cwd: "tests/fixtures",
|
||||
"echo 1"
|
||||
);
|
||||
|
||||
assert!(actual.contains("1"));
|
||||
|
|
|
@ -15,13 +15,12 @@ fn can_only_apply_one() {
|
|||
#[test]
|
||||
fn by_one_with_field_passed() {
|
||||
Playground::setup("plugin_inc_test_1", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[package]
|
||||
edition = "2018"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -36,13 +35,12 @@ fn by_one_with_field_passed() {
|
|||
#[test]
|
||||
fn by_one_with_no_field_passed() {
|
||||
Playground::setup("plugin_inc_test_2", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[package]
|
||||
contributors = "2"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -57,13 +55,12 @@ fn by_one_with_no_field_passed() {
|
|||
#[test]
|
||||
fn semversion_major_inc() {
|
||||
Playground::setup("plugin_inc_test_3", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[package]
|
||||
version = "0.1.3"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -78,13 +75,12 @@ fn semversion_major_inc() {
|
|||
#[test]
|
||||
fn semversion_minor_inc() {
|
||||
Playground::setup("plugin_inc_test_4", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[package]
|
||||
version = "0.1.3"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -99,13 +95,12 @@ fn semversion_minor_inc() {
|
|||
#[test]
|
||||
fn semversion_patch_inc() {
|
||||
Playground::setup("plugin_inc_test_5", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[package]
|
||||
version = "0.1.3"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
@ -120,13 +115,12 @@ fn semversion_patch_inc() {
|
|||
#[test]
|
||||
fn semversion_without_passing_field() {
|
||||
Playground::setup("plugin_inc_test_6", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[package]
|
||||
version = "0.1.3"
|
||||
"#
|
||||
"#,
|
||||
)]);
|
||||
|
||||
let actual = nu!(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
mod helpers;
|
||||
|
||||
use helpers as h;
|
||||
use h::{Playground, Stub::*};
|
||||
use helpers as h;
|
||||
|
||||
#[test]
|
||||
fn can_only_apply_one() {
|
||||
|
@ -39,10 +39,9 @@ fn acts_without_passing_field() {
|
|||
#[test]
|
||||
fn downcases() {
|
||||
Playground::setup("plugin_str_test_2", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[dependency]
|
||||
name = "LIGHT"
|
||||
"#,
|
||||
|
@ -60,10 +59,9 @@ fn downcases() {
|
|||
#[test]
|
||||
fn upcases() {
|
||||
Playground::setup("plugin_str_test_3", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[package]
|
||||
name = "nushell"
|
||||
"#,
|
||||
|
@ -98,10 +96,9 @@ fn converts_to_int() {
|
|||
#[test]
|
||||
fn replaces() {
|
||||
Playground::setup("plugin_str_test_4", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[package]
|
||||
name = "nushell"
|
||||
"#,
|
||||
|
@ -124,10 +121,9 @@ fn replaces() {
|
|||
#[test]
|
||||
fn find_and_replaces() {
|
||||
Playground::setup("plugin_str_test_5", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
[fortune.teller]
|
||||
phone = "1-800-KATZ"
|
||||
"#,
|
||||
|
@ -150,10 +146,9 @@ fn find_and_replaces() {
|
|||
#[test]
|
||||
fn find_and_replaces_without_passing_field() {
|
||||
Playground::setup("plugin_str_test_6", |dirs, sandbox| {
|
||||
sandbox
|
||||
.with_files(vec![FileWithContent(
|
||||
sandbox.with_files(vec![FileWithContent(
|
||||
"sample.toml",
|
||||
r#"
|
||||
r#"
|
||||
[fortune.teller]
|
||||
phone = "1-800-KATZ"
|
||||
"#,
|
||||
|
|
Loading…
Reference in a new issue