use nu_test_support::fs::{file_contents, Stub::FileWithContent}; use nu_test_support::fs::{AbsolutePath, DisplayPath}; use nu_test_support::pipeline as input; use nu_test_support::playground::{says, Executable, Playground}; use hamcrest2::assert_that; use hamcrest2::prelude::*; #[test] fn clears_the_configuration() { Playground::setup("config_clear_test", |dirs, nu| { let file = AbsolutePath::new(dirs.test().join("config.toml")); nu.with_config(&file); nu.with_files(vec![FileWithContent( "config.toml", r#" skip_welcome_message = true pivot_mode = "arepas" "#, )]); assert!(nu.pipeline("config clear").execute().is_ok()); assert!(file_contents(&file).is_empty()); }); } #[test] fn retrieves_config_values() { Playground::setup("config_get_test", |dirs, nu| { let file = AbsolutePath::new(dirs.test().join("config.toml")); nu.with_config(&file); nu.with_files(vec![FileWithContent( "config.toml", r#" skip_welcome_message = true [arepa] colors = ["yellow", "white"] "#, )]); assert_that!( nu.pipeline("config get arepa.colors.0"), says().to_stdout("yellow") ); }) } #[test] fn sets_a_config_value() { Playground::setup("config_set_test", |dirs, nu| { let file = AbsolutePath::new(dirs.test().join("config.toml")); nu.with_config(&file); nu.with_files(vec![FileWithContent( "config.toml", r#" skip_welcome_message = true [nu] meal = "taco" "#, )]); assert!(nu.pipeline("config set nu.meal 'arepa'").execute().is_ok()); assert_that!(nu.pipeline("config get nu.meal"), says().to_stdout("arepa")); }) } #[test] fn sets_config_values_into_one_property() { Playground::setup("config_set_into_test", |dirs, nu| { let file = AbsolutePath::new(dirs.test().join("config.toml")); nu.with_config(&file); nu.with_files(vec![FileWithContent( "config.toml", r#" skip_welcome_message = true "#, )]); assert!(nu .pipeline(&input( r#" echo ["amarillo", "blanco"] | config set_into arepa_colors "#, )) .execute() .is_ok()); assert_that!( nu.pipeline("config get arepa_colors.1"), says().to_stdout("blanco") ); }) } #[test] fn config_path() { Playground::setup("config_path_test", |dirs, nu| { let file = AbsolutePath::new(dirs.test().join("config.toml")); nu.with_config(&file); nu.with_files(vec![FileWithContent( "config.toml", r#" skip_welcome_message = true "#, )]); assert_that!( nu.pipeline("config path"), says().to_stdout(&file.display_path()) ); }) } #[test] fn removes_config_values() { Playground::setup("config_remove_test", |dirs, nu| { let file = AbsolutePath::new(dirs.test().join("config.toml")); nu.with_config(&file); nu.with_files(vec![FileWithContent( "config.toml", r#" skip_welcome_message = true "#, )]); assert!(nu .pipeline("config remove skip_welcome_message") .execute() .is_ok()); assert!(file_contents(&file).is_empty()); }) }