just/tests/dotenv.rs
2021-03-30 17:59:15 -07:00

94 lines
1.9 KiB
Rust

use executable_path::executable_path;
use std::{process, str};
use test_utilities::tmptree;
#[test]
fn dotenv() {
let tmp = tmptree! {
".env": "KEY=ROOT",
sub: {
".env": "KEY=SUB",
justfile: "default:\n\techo KEY=$KEY",
},
};
let binary = executable_path("just");
let output = process::Command::new(binary)
.current_dir(tmp.path())
.arg("sub/default")
.output()
.expect("just invocation failed");
assert_eq!(output.status.code().unwrap(), 0);
let stdout = str::from_utf8(&output.stdout).unwrap();
assert_eq!(stdout, "KEY=SUB\n");
}
test! {
name: set_false,
justfile: r#"
set dotenv-load := false
foo:
if [ -n "${DOTENV_KEY+1}" ]; then echo defined; else echo undefined; fi
"#,
stdout: "undefined\n",
stderr: "if [ -n \"${DOTENV_KEY+1}\" ]; then echo defined; else echo undefined; fi\n",
dotenv_load: false,
}
test! {
name: set_implicit,
justfile: r#"
set dotenv-load
foo:
echo $DOTENV_KEY
"#,
stdout: "dotenv-value\n",
stderr: "echo $DOTENV_KEY\n",
dotenv_load: false,
}
test! {
name: set_true,
justfile: r#"
set dotenv-load := true
foo:
echo $DOTENV_KEY
"#,
stdout: "dotenv-value\n",
stderr: "echo $DOTENV_KEY\n",
dotenv_load: false,
}
// Un-comment this on 2021-07-01.
//
// test! {
// name: warning,
// justfile: r#"
// foo:
// echo $DOTENV_KEY
// "#,
// stdout: "dotenv-value\n",
// stderr: "
// warning: A `.env` file was found and loaded, but this behavior will
// change in the future. To silence this warning and continue loading `.env`
// files, add:
// set dotenv-load := true
// To silence this warning and stop loading `.env` files, add:
// set dotenv-load := false
// See https://github.com/casey/just/issues/469 for more details.
// echo $DOTENV_KEY
// ",
// dotenv_load: false,
// }