[+] End-to-end testing

This commit is contained in:
2026-05-08 15:32:33 +00:00
parent ac2f2559c1
commit 74e4a6eff4
15 changed files with 2405 additions and 62 deletions
+53
View File
@@ -308,6 +308,56 @@ fn repo_deletion_decision_ignores_repos_not_previously_synced_everywhere() {
assert_eq!(decision, RepoDeletionDecision::None);
}
#[test]
fn filtered_sync_visibility_does_not_treat_state_only_repos_as_deleted() {
let mut mirror = test_mirror();
mirror.sync_visibility = crate::config::SyncVisibility::Public;
let mut ref_state = RefState::default();
ref_state.set_repo(
&mirror.name,
"private-repo",
BTreeMap::from([("github_alice".to_string(), remote_ref_state("a", &[]))]),
);
let repo_filter = mirror.repo_filter().unwrap();
let names = sync_candidate_repo_names(&HashMap::new(), &ref_state, &mirror, &repo_filter);
assert!(names.is_empty());
}
#[test]
fn all_visibility_keeps_state_only_repos_for_deletion_detection() {
let mirror = test_mirror();
let mut ref_state = RefState::default();
ref_state.set_repo(
&mirror.name,
"deleted-repo",
BTreeMap::from([("github_alice".to_string(), remote_ref_state("a", &[]))]),
);
let repo_filter = mirror.repo_filter().unwrap();
let names = sync_candidate_repo_names(&HashMap::new(), &ref_state, &mirror, &repo_filter);
assert_eq!(names, BTreeSet::from(["deleted-repo".to_string()]));
}
#[test]
fn repo_name_filters_do_not_treat_state_only_repos_as_deleted() {
let mut mirror = test_mirror();
mirror.repo_whitelist = vec!["^public-".to_string()];
let repo_filter = mirror.repo_filter().unwrap();
let mut ref_state = RefState::default();
ref_state.set_repo(
&mirror.name,
"private-repo",
BTreeMap::from([("github_alice".to_string(), remote_ref_state("a", &[]))]),
);
let names = sync_candidate_repo_names(&HashMap::new(), &ref_state, &mirror, &repo_filter);
assert!(names.is_empty());
}
#[test]
fn conflict_branch_prefixes_are_reversible_not_slug_collisions() {
let slash_branch = conflict_pr_branch_prefix("release/foo");
@@ -358,6 +408,9 @@ fn test_mirror() -> MirrorConfig {
MirrorConfig {
name: "sync-1".to_string(),
endpoints: vec![endpoint("github"), endpoint("gitea")],
sync_visibility: crate::config::SyncVisibility::All,
repo_whitelist: Vec::new(),
repo_blacklist: Vec::new(),
create_missing: true,
visibility: crate::config::Visibility::Private,
allow_force: false,