mod common;
use common::fixtures::WorkspaceBuilder;
#[test]
fn test_forall_all_repos() {
let ws = WorkspaceBuilder::new()
.add_repo("frontend")
.add_repo("backend")
.build();
let manifest = ws.load_manifest();
let result = gitgrip::cli::commands::forall::run_forall(
&ws.workspace_root,
&manifest,
"echo hello",
false, false, false, None,
None,
);
assert!(result.is_ok(), "forall should succeed: {:?}", result.err());
}
#[test]
fn test_forall_changed_only() {
let ws = WorkspaceBuilder::new()
.add_repo("frontend")
.add_repo("backend")
.build();
let manifest = ws.load_manifest();
std::fs::write(ws.repo_path("frontend").join("change.txt"), "data").unwrap();
let result = gitgrip::cli::commands::forall::run_forall(
&ws.workspace_root,
&manifest,
"echo changed",
false,
true, false,
None,
None,
);
assert!(
result.is_ok(),
"forall changed_only should succeed: {:?}",
result.err()
);
}
#[test]
fn test_forall_parallel() {
let ws = WorkspaceBuilder::new()
.add_repo("alpha")
.add_repo("beta")
.add_repo("gamma")
.build();
let manifest = ws.load_manifest();
let result = gitgrip::cli::commands::forall::run_forall(
&ws.workspace_root,
&manifest,
"echo parallel",
true, false,
false,
None,
None,
);
assert!(
result.is_ok(),
"forall parallel should succeed: {:?}",
result.err()
);
}
#[test]
fn test_forall_git_command_intercepted() {
let ws = WorkspaceBuilder::new().add_repo("app").build();
let manifest = ws.load_manifest();
let result = gitgrip::cli::commands::forall::run_forall(
&ws.workspace_root,
&manifest,
"git rev-parse --abbrev-ref HEAD",
false,
false,
false, None,
None,
);
assert!(
result.is_ok(),
"forall intercepted git command should succeed: {:?}",
result.err()
);
}
#[test]
fn test_forall_no_intercept() {
let ws = WorkspaceBuilder::new().add_repo("app").build();
let manifest = ws.load_manifest();
let result = gitgrip::cli::commands::forall::run_forall(
&ws.workspace_root,
&manifest,
"git rev-parse --abbrev-ref HEAD",
false,
false,
true, None,
None,
);
assert!(
result.is_ok(),
"forall no_intercept should succeed: {:?}",
result.err()
);
}