just/tests/init.rs

207 lines
3.8 KiB
Rust
Raw Permalink Normal View History

use super::*;
2022-02-23 11:47:43 -08:00
const EXPECTED: &str = "default:\n echo 'Hello, world!'\n";
#[test]
fn current_dir() {
let tmp = tempdir();
let output = Command::new(executable_path("just"))
.current_dir(tmp.path())
.arg("--init")
.output()
.unwrap();
assert!(output.status.success());
assert_eq!(
fs::read_to_string(tmp.path().join("justfile")).unwrap(),
EXPECTED
);
}
#[test]
fn exists() {
let output = Test::new()
.no_justfile()
.arg("--init")
.stderr_regex("Wrote justfile to `.*`\n")
.run();
Test::with_tempdir(output.tempdir)
.no_justfile()
.arg("--init")
.status(EXIT_FAILURE)
.stderr_regex("error: Justfile `.*` already exists\n")
.run();
}
#[test]
fn write_error() {
let test = Test::new();
let justfile_path = test.justfile_path();
2022-12-15 16:53:21 -08:00
fs::create_dir(justfile_path).unwrap();
test
.no_justfile()
2023-01-03 22:31:56 -08:00
.args(["--init"])
.status(EXIT_FAILURE)
.stderr_regex(if cfg!(windows) {
r"error: Failed to write justfile to `.*`: Access is denied. \(os error 5\)\n"
} else {
r"error: Failed to write justfile to `.*`: Is a directory \(os error 21\)\n"
})
.run();
}
#[test]
fn invocation_directory() {
2021-07-03 14:26:59 -07:00
let tmp = temptree! {
".git": {},
};
let test = Test::with_tempdir(tmp);
let justfile_path = test.justfile_path();
let _tmp = test
.no_justfile()
.stderr_regex("Wrote justfile to `.*`\n")
.arg("--init")
.run();
assert_eq!(fs::read_to_string(justfile_path).unwrap(), EXPECTED);
}
2019-11-19 23:35:29 -08:00
#[test]
fn parent_dir() {
2021-07-03 14:26:59 -07:00
let tmp = temptree! {
2019-11-19 23:35:29 -08:00
".git": {},
sub: {},
};
let output = Command::new(executable_path("just"))
.current_dir(tmp.path().join("sub"))
.arg("--init")
.output()
.unwrap();
assert!(output.status.success());
assert_eq!(
fs::read_to_string(tmp.path().join("justfile")).unwrap(),
EXPECTED
);
}
#[test]
fn alternate_marker() {
2021-07-03 14:26:59 -07:00
let tmp = temptree! {
"_darcs": {},
};
let output = Command::new(executable_path("just"))
.current_dir(tmp.path())
.arg("--init")
.output()
.unwrap();
assert!(output.status.success());
assert_eq!(
fs::read_to_string(tmp.path().join("justfile")).unwrap(),
EXPECTED
);
}
#[test]
fn search_directory() {
2021-07-03 14:26:59 -07:00
let tmp = temptree! {
sub: {
".git": {},
},
};
let output = Command::new(executable_path("just"))
.current_dir(tmp.path())
.arg("--init")
.arg("sub/")
.output()
.unwrap();
assert!(output.status.success());
assert_eq!(
fs::read_to_string(tmp.path().join("sub/justfile")).unwrap(),
EXPECTED
);
}
#[test]
fn justfile() {
2021-07-03 14:26:59 -07:00
let tmp = temptree! {
sub: {
".git": {},
},
};
let output = Command::new(executable_path("just"))
.current_dir(tmp.path().join("sub"))
.arg("--init")
.arg("--justfile")
.arg(tmp.path().join("justfile"))
.output()
.unwrap();
assert!(output.status.success());
assert_eq!(
fs::read_to_string(tmp.path().join("justfile")).unwrap(),
EXPECTED
);
}
#[test]
fn justfile_and_working_directory() {
2021-07-03 14:26:59 -07:00
let tmp = temptree! {
sub: {
".git": {},
},
};
let output = Command::new(executable_path("just"))
.current_dir(tmp.path().join("sub"))
.arg("--init")
.arg("--justfile")
.arg(tmp.path().join("justfile"))
.arg("--working-directory")
.arg("/")
.output()
.unwrap();
assert!(output.status.success());
assert_eq!(
fs::read_to_string(tmp.path().join("justfile")).unwrap(),
EXPECTED
);
}
2022-02-23 11:47:43 -08:00
#[test]
fn fmt_compatibility() {
let output = Test::new()
2022-02-23 11:47:43 -08:00
.no_justfile()
.arg("--init")
.stderr_regex("Wrote justfile to `.*`\n")
.run();
Test::with_tempdir(output.tempdir)
2022-02-23 11:47:43 -08:00
.no_justfile()
.arg("--unstable")
.arg("--check")
.arg("--fmt")
.status(EXIT_SUCCESS)
.run();
}