From 81cc75378388fe1369ef9b2600608adbdde56ffc Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 31 Jul 2024 11:22:32 +0100 Subject: test(remote): `list` returns HEAD and main returns head and main branch head --- tests/git_remote_helper.rs | 80 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 70 insertions(+), 10 deletions(-) (limited to 'tests/git_remote_helper.rs') diff --git a/tests/git_remote_helper.rs b/tests/git_remote_helper.rs index 9bbd10f..05ef442 100644 --- a/tests/git_remote_helper.rs +++ b/tests/git_remote_helper.rs @@ -50,31 +50,26 @@ fn cli_tester_after_fetch(git_repo: &GitTestRepo) -> Result { mod initially_runs_fetch { - use relay::ListenerReqFunc; - use super::*; async fn async_run_test() -> Result<()> { let source_git_repo = prep_git_repo()?; - let source_git_url = format!("git://{}", source_git_repo.dir.to_str().unwrap()); let git_repo = prep_git_repo()?; let events = vec![ generate_test_key_1_metadata_event("fred"), generate_test_key_1_relay_list_event(), - generate_repo_ref_event_with_git_server(source_git_url), + generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), ]; - let responder: ListenerReqFunc = &|relay, client_id, subscription_id, _| -> Result<()> { - relay.respond_events(client_id, &subscription_id, &events)?; - Ok(()) - }; // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( - Relay::new(8051, None, Some(&responder)), + Relay::new(8051, None, None), Relay::new(8052, None, None), Relay::new(8053, None, None), Relay::new(8055, None, None), Relay::new(8056, None, None), Relay::new(8057, None, None), ); + r51.events = events.clone(); + r55.events = events; // // check relay had the right number of events let cli_tester_handle = std::thread::spawn(move || -> Result<()> { @@ -86,7 +81,7 @@ mod initially_runs_fetch { Ok(()) }); - // launch relay + // launch relays let _ = join!( r51.listen_until_close(), r52.listen_until_close(), @@ -105,3 +100,68 @@ mod initially_runs_fetch { async_run_test().await } } + +mod list { + + use super::*; + + async fn async_run_test() -> Result<()> { + let source_git_repo = prep_git_repo()?; + std::fs::write(source_git_repo.dir.join("commit.md"), "some content")?; + let main_commit_id = source_git_repo.stage_and_commit("commit.md")?; + + let git_repo = prep_git_repo()?; + let events = vec![ + generate_test_key_1_metadata_event("fred"), + generate_test_key_1_relay_list_event(), + generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), + ]; + // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) + let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( + Relay::new(8051, None, None), + Relay::new(8052, None, None), + Relay::new(8053, None, None), + Relay::new(8055, None, None), + Relay::new(8056, None, None), + Relay::new(8057, None, None), + ); + r51.events = events.clone(); + r55.events = events; + + let cli_tester_handle = std::thread::spawn(move || -> Result<()> { + let mut p = cli_tester_after_fetch(&git_repo)?; + p.send_line("list")?; + assert_eq!( + p.expect_eventually("\r\n\r\n")? + .split("\r\n") + .collect::>(), + vec![ + &format!("{} HEAD", main_commit_id), + &format!("{} refs/heads/main", main_commit_id), + ], + ); + p.exit()?; + for p in [51, 52, 53, 55, 56, 57] { + relay::shutdown_relay(8000 + p)?; + } + Ok(()) + }); + // launch relays + let _ = join!( + r51.listen_until_close(), + r52.listen_until_close(), + r53.listen_until_close(), + r55.listen_until_close(), + r56.listen_until_close(), + r57.listen_until_close(), + ); + cli_tester_handle.join().unwrap()?; + Ok(()) + } + + #[tokio::test] + #[serial] + async fn lists_head_and_main_heads() -> Result<()> { + async_run_test().await + } +} -- cgit v1.2.3