204 lines
3.7 KiB
Rust
204 lines
3.7 KiB
Rust
use crate::common::*;
|
|
|
|
#[test]
|
|
fn dotenv() {
|
|
let tmp = temptree! {
|
|
".env": "KEY=ROOT",
|
|
sub: {
|
|
".env": "KEY=SUB",
|
|
justfile: "default:\n\techo KEY=$KEY",
|
|
},
|
|
};
|
|
|
|
let binary = executable_path("just");
|
|
|
|
let output = 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",
|
|
}
|
|
|
|
test! {
|
|
name: set_implicit,
|
|
justfile: r#"
|
|
set dotenv-load
|
|
|
|
foo:
|
|
echo $DOTENV_KEY
|
|
"#,
|
|
stdout: "dotenv-value\n",
|
|
stderr: "echo $DOTENV_KEY\n",
|
|
}
|
|
|
|
test! {
|
|
name: set_true,
|
|
justfile: r#"
|
|
set dotenv-load := true
|
|
|
|
foo:
|
|
echo $DOTENV_KEY
|
|
"#,
|
|
stdout: "dotenv-value\n",
|
|
stderr: "echo $DOTENV_KEY\n",
|
|
}
|
|
|
|
#[test]
|
|
fn warning() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
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
|
|
|
|
This warning may \
|
|
also be silenced by setting the `JUST_SUPPRESS_DOTENV_LOAD_WARNING`
|
|
environment variable to `1`. \
|
|
This can be used to silence the warning globally by
|
|
adding the following line to your shell rc \
|
|
file:
|
|
|
|
export JUST_SUPPRESS_DOTENV_LOAD_WARNING=1
|
|
|
|
See https://github.com/casey/just/issues/469 \
|
|
for more details.
|
|
echo $DOTENV_KEY
|
|
",
|
|
)
|
|
.suppress_dotenv_load_warning(false)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn path_not_found() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
foo:
|
|
echo $NAME
|
|
",
|
|
)
|
|
.args(&["--dotenv-path", ".env.prod"])
|
|
.stderr(if cfg!(windows) {
|
|
"error: Failed to load environment file: The system cannot find the file specified. (os \
|
|
error 2)\n"
|
|
} else {
|
|
"error: Failed to load environment file: No such file or directory (os error 2)\n"
|
|
})
|
|
.status(EXIT_FAILURE)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn path_resolves() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
foo:
|
|
@echo $NAME
|
|
",
|
|
)
|
|
.tree(tree! {
|
|
subdir: {
|
|
".env": "NAME=bar"
|
|
}
|
|
})
|
|
.args(&["--dotenv-path", "subdir/.env"])
|
|
.stdout("bar\n")
|
|
.status(EXIT_SUCCESS)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn filename_resolves() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
foo:
|
|
@echo $NAME
|
|
",
|
|
)
|
|
.tree(tree! {
|
|
".env.special": "NAME=bar"
|
|
})
|
|
.args(&["--dotenv-filename", ".env.special"])
|
|
.stdout("bar\n")
|
|
.status(EXIT_SUCCESS)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn filename_flag_overwrites_no_load() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set dotenv-load := false
|
|
|
|
foo:
|
|
@echo $NAME
|
|
",
|
|
)
|
|
.tree(tree! {
|
|
".env.special": "NAME=bar"
|
|
})
|
|
.args(&["--dotenv-filename", ".env.special"])
|
|
.stdout("bar\n")
|
|
.status(EXIT_SUCCESS)
|
|
.run();
|
|
}
|
|
|
|
#[test]
|
|
fn path_flag_overwrites_no_load() {
|
|
Test::new()
|
|
.justfile(
|
|
"
|
|
set dotenv-load := false
|
|
|
|
foo:
|
|
@echo $NAME
|
|
",
|
|
)
|
|
.tree(tree! {
|
|
subdir: {
|
|
".env": "NAME=bar"
|
|
}
|
|
})
|
|
.args(&["--dotenv-path", "subdir/.env"])
|
|
.stdout("bar\n")
|
|
.status(EXIT_SUCCESS)
|
|
.run();
|
|
}
|