From 17290583527963bdb17a34b04e0888a7dfdb3fea Mon Sep 17 00:00:00 2001 From: Sam Hedin Date: Fri, 10 Jul 2020 04:43:34 +0200 Subject: [PATCH] Move tests out of cli crate --- crates/nu-cli/tests/commands/autoenv.rs | 101 --------------------- tests/shell/pipeline/commands/internal.rs | 103 ++++++++++++++++++++++ 2 files changed, 103 insertions(+), 101 deletions(-) diff --git a/crates/nu-cli/tests/commands/autoenv.rs b/crates/nu-cli/tests/commands/autoenv.rs index 44ea8d0d8..86ba3ba2e 100644 --- a/crates/nu-cli/tests/commands/autoenv.rs +++ b/crates/nu-cli/tests/commands/autoenv.rs @@ -1,104 +1,3 @@ use nu_test_support::fs::Stub::FileWithContent; use nu_test_support::nu; use nu_test_support::playground::Playground; - -#[test] -fn autoenv() { - Playground::setup("autoenv_test_1", |dirs, sandbox| { - sandbox.mkdir("foo/bar"); - sandbox.with_files(vec![ - FileWithContent( - ".nu-env", - r#"[env] - testkey = "testvalue" - [scriptvars] - myscript = "echo 'myval'" - - [scripts] - entryscripts = ["touch hello.txt"] - exitscripts = ["touch bye.txt"]"#, - ), - FileWithContent( - "foo/.nu-env", - r#"[env] - overwrite_me = "set_in_foo" - fookey = "fooval""#, - ), - FileWithContent( - "foo/bar/.nu-env", - r#"[env] - overwrite_me = "set_in_bar""#, - ), - ]); - - //Make sure basic keys are set - let actual = nu!( - cwd: dirs.test(), - r#"autoenv trust - echo $nu.env.testkey"# - ); - assert!(actual.out.ends_with("testvalue")); - - // Make sure script keys are set - let actual = nu!( - cwd: dirs.test(), - r#"echo $nu.env.myscript"# - ); - assert!(actual.out.ends_with("myval")); - - // Make sure entry scripts are run - let actual = nu!( - cwd: dirs.test(), - r#"ls | where name == "hello.txt" | get name"# - ); - assert!(actual.out.contains("hello.txt")); - - //Backing out of the directory should unset the keys - let actual = nu!( - cwd: dirs.test(), - r#"cd .. - echo $nu.env.testkey"# - ); - assert!(!actual.out.ends_with("testvalue")); - - // Make sure exit scripts are run - let actual = nu!( - cwd: dirs.test(), - r#"cd .. - ls | where name == "bye.txt" | get name"# - ); - assert!(actual.out.contains("bye.txt")); - - //Subdirectories should overwrite the values of parent directories. - let actual = nu!( - cwd: dirs.test(), - r#"autoenv trust foo - cd foo/bar - autoenv trust - echo $nu.env.overwrite_me"# - ); - assert!(actual.out.ends_with("set_in_bar")); - - //Variables set in parent directories should be set even if you directly cd to a subdir - let actual = nu!( - cwd: dirs.test(), - r#"autoenv trust foo - cd foo/bar - autoenv trust - echo $nu.env.fookey"# - ); - assert!(actual.out.ends_with("fooval")); - - //Make sure that overwritten values are restored. - //By deleting foo/.nu-env, we make sure that the value is actually restored and not just set again by autoenv when we re-visit foo. - let actual = nu!( - cwd: dirs.test(), - r#"cd foo - cd bar - rm ../.nu-env - cd .. - echo $nu.env.overwrite_me"# - ); - assert!(actual.out.ends_with("set_in_foo")) - }) -} diff --git a/tests/shell/pipeline/commands/internal.rs b/tests/shell/pipeline/commands/internal.rs index 8e18c2c17..5bfa7b34f 100644 --- a/tests/shell/pipeline/commands/internal.rs +++ b/tests/shell/pipeline/commands/internal.rs @@ -1,5 +1,6 @@ use nu_test_support::fs::Stub::EmptyFile; use nu_test_support::fs::Stub::FileWithContentToBeTrimmed; +use nu_test_support::fs::Stub::FileWithContent; use nu_test_support::nu; use nu_test_support::pipeline; use nu_test_support::playground::Playground; @@ -36,6 +37,108 @@ fn takes_rows_of_nu_value_strings_and_pipes_it_to_stdin_of_external() { }) } +#[test] +fn autoenv() { + Playground::setup("autoenv_test_1", |dirs, sandbox| { + sandbox.mkdir("foo/bar"); + sandbox.with_files(vec![ + FileWithContent( + ".nu-env", + r#"[env] + testkey = "testvalue" + [scriptvars] + myscript = "echo 'myval'" + + [scripts] + entryscripts = ["touch hello.txt"] + exitscripts = ["touch bye.txt"]"#, + ), + FileWithContent( + "foo/.nu-env", + r#"[env] + overwrite_me = "set_in_foo" + fookey = "fooval""#, + ), + FileWithContent( + "foo/bar/.nu-env", + r#"[env] + overwrite_me = "set_in_bar""#, + ), + ]); + + //Make sure basic keys are set + let actual = nu!( + cwd: dirs.test(), + r#"autoenv trust + echo $nu.env.testkey"# + ); + assert_eq!(actual.out, "a"); + assert!(actual.out.ends_with("testvalue")); + + // Make sure script keys are set + let actual = nu!( + cwd: dirs.test(), + r#"echo $nu.env.myscript"# + ); + assert!(actual.out.ends_with("myval")); + + // Make sure entry scripts are run + let actual = nu!( + cwd: dirs.test(), + r#"ls | where name == "hello.txt" | get name"# + ); + assert!(actual.out.contains("hello.txt")); + + //Backing out of the directory should unset the keys + let actual = nu!( + cwd: dirs.test(), + r#"cd .. + echo $nu.env.testkey"# + ); + assert!(!actual.out.ends_with("testvalue")); + + // Make sure exit scripts are run + let actual = nu!( + cwd: dirs.test(), + r#"cd .. + ls | where name == "bye.txt" | get name"# + ); + assert!(actual.out.contains("bye.txt")); + + //Subdirectories should overwrite the values of parent directories. + let actual = nu!( + cwd: dirs.test(), + r#"autoenv trust foo + cd foo/bar + autoenv trust + echo $nu.env.overwrite_me"# + ); + assert!(actual.out.ends_with("set_in_bar")); + + //Variables set in parent directories should be set even if you directly cd to a subdir + let actual = nu!( + cwd: dirs.test(), + r#"autoenv trust foo + cd foo/bar + autoenv trust + echo $nu.env.fookey"# + ); + assert!(actual.out.ends_with("fooval")); + + //Make sure that overwritten values are restored. + //By deleting foo/.nu-env, we make sure that the value is actually restored and not just set again by autoenv when we re-visit foo. + let actual = nu!( + cwd: dirs.test(), + r#"cd foo + cd bar + rm ../.nu-env + cd .. + echo $nu.env.overwrite_me"# + ); + assert!(actual.out.ends_with("set_in_foo")) + }) +} + #[test] fn proper_it_expansion() { Playground::setup("ls_test_1", |dirs, sandbox| {