From f48677bad3f3dabb80992806e0e4c8ad4d45c716 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Mon, 4 Aug 2025 11:50:39 +0100 Subject: feat(send): support PR and PR update events send as a PR if the commit would make patches that are too big for nostr events. send as a PR update if the proposal is PR. send as a PR, revising a patch root, if patches would be too big. in tests `get_pretend_proposal_root_event` has to be a actual proposal with a tip, rather than just a cover letter, so we have replaced it. --- tests/ngit_send.rs | 84 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 64 insertions(+), 20 deletions(-) (limited to 'tests') diff --git a/tests/ngit_send.rs b/tests/ngit_send.rs index ec72667..e128bd9 100644 --- a/tests/ngit_send.rs +++ b/tests/ngit_send.rs @@ -37,6 +37,25 @@ mod when_commits_behind_ask_to_proceed { Ok(test_repo) } + fn create_relay_51() -> Result> { + Ok(Relay::new( + 8051, + None, + Some(&|relay, client_id, subscription_id, _| -> Result<()> { + relay.respond_events( + client_id, + &subscription_id, + &vec![ + generate_test_key_1_metadata_event("fred"), + generate_test_key_1_relay_list_event(), + generate_repo_ref_event(), + ], + )?; + Ok(()) + }), + )) + } + fn expect_confirm_prompt(p: &mut CliTester) -> Result { p.expect("fetching updates...\r\n")?; p.expect_eventually("\r\n")?; // may be 'no updates' or some updates @@ -49,37 +68,62 @@ mod when_commits_behind_ask_to_proceed { ) } - #[test] - fn asked_with_default_no() -> Result<()> { + #[tokio::test] + #[serial] + async fn asked_with_default_no() -> Result<()> { let test_repo = prep_test_repo()?; + let mut r51 = create_relay_51()?; + // // check relay had the right number of events + let cli_tester_handle = std::thread::spawn(move || -> Result<()> { + let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); + expect_confirm_prompt(&mut p)?; + p.exit()?; + relay::shutdown_relay(8051)?; + Ok(()) + }); - let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); - expect_confirm_prompt(&mut p)?; - p.exit()?; + // launch relay + r51.listen_until_close().await?; + cli_tester_handle.join().unwrap()?; Ok(()) } - #[test] - fn when_response_is_false_aborts() -> Result<()> { + #[tokio::test] + #[serial] + async fn when_response_is_false_aborts() -> Result<()> { let test_repo = prep_test_repo()?; + let mut r51 = create_relay_51()?; + let cli_tester_handle = std::thread::spawn(move || -> Result<()> { + let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); + expect_confirm_prompt(&mut p)?.succeeds_with(Some(false))?; + p.expect_end_with("Error: aborting so commits can be rebased\r\n")?; + relay::shutdown_relay(8051)?; + Ok(()) + }); - let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); - - expect_confirm_prompt(&mut p)?.succeeds_with(Some(false))?; - - p.expect_end_with("Error: aborting so commits can be rebased\r\n")?; - + // launch relay + r51.listen_until_close().await?; + cli_tester_handle.join().unwrap()?; Ok(()) } - #[test] + + #[tokio::test] #[serial] - fn when_response_is_true_proceeds() -> Result<()> { + async fn when_response_is_true_proceeds() -> Result<()> { let test_repo = prep_test_repo()?; + let mut r51 = create_relay_51()?; + let cli_tester_handle = std::thread::spawn(move || -> Result<()> { + let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); + expect_confirm_prompt(&mut p)?.succeeds_with(Some(true))?; + p.expect("? include cover letter")?; + p.exit()?; + relay::shutdown_relay(8051)?; + Ok(()) + }); - let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); - expect_confirm_prompt(&mut p)?.succeeds_with(Some(true))?; - p.expect("? include cover letter")?; - p.exit()?; + // launch relay + r51.listen_until_close().await?; + cli_tester_handle.join().unwrap()?; Ok(()) } } @@ -1620,7 +1664,7 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let .unwrap() .as_slice()[1], // id of state nevent - "431e58eb8e1b4e20292d1d5bbe81d5cfb042e1bc165de32eddfdd52245a4cce4", + "000c104861e34a453481ab23e7de21a6baf475b394479705363b035936732528", ); } Ok(()) -- cgit v1.2.3