From 71606283bf21f0fb4931850cd69d97344dca521e Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Fri, 22 Mar 2024 15:51:42 +0000 Subject: replace blocking client in tests with async as it has been removed from nostr_sdk --- tests/pull.rs | 168 ++++++++++++++++++++++++++++++---------------------------- 1 file changed, 86 insertions(+), 82 deletions(-) (limited to 'tests/pull.rs') diff --git a/tests/pull.rs b/tests/pull.rs index 853f518..bf132e7 100644 --- a/tests/pull.rs +++ b/tests/pull.rs @@ -712,7 +712,8 @@ mod when_branch_is_checked_out { mod when_latest_event_rebases_branch { use std::time::Duration; - use nostr_sdk::blocking::Client; + use nostr_sdk::Client; + use tokio::{runtime::Handle, task::JoinHandle}; use super::*; @@ -734,26 +735,26 @@ mod when_branch_is_checked_out { r55.events.push(generate_test_key_1_metadata_event("fred")); r55.events.push(generate_test_key_1_relay_list_event()); - let cli_tester_handle = - std::thread::spawn(move || -> Result<(GitTestRepo, GitTestRepo)> { + let cli_tester_handle: JoinHandle> = + tokio::task::spawn_blocking(move || { // create 3 proposals let _ = cli_tester_create_proposals()?; // get proposal id of first - let client = Client::new(&nostr::Keys::generate()); - client.add_relay("ws://localhost:8055")?; - client.connect_relay("ws://localhost:8055")?; - let proposals = client.get_events_of( + let client = Client::default(); + Handle::current().block_on(client.add_relay("ws://localhost:8055"))?; + Handle::current().block_on(client.connect_relay("ws://localhost:8055"))?; + let proposals = Handle::current().block_on(client.get_events_of( vec![ - nostr::Filter::default() - .kind(nostr::Kind::Custom(PATCH_KIND)) - .custom_tag( - nostr::SingleLetterTag::lowercase(nostr::Alphabet::T), - vec!["root"], - ), - ], + nostr::Filter::default() + .kind(nostr::Kind::Custom(PATCH_KIND)) + .custom_tag( + nostr::SingleLetterTag::lowercase(nostr::Alphabet::T), + vec!["root"], + ), + ], Some(Duration::from_millis(500)), - )?; - client.disconnect()?; + ))?; + Handle::current().block_on(client.disconnect())?; let proposal_1_id = proposals .iter() @@ -808,7 +809,7 @@ mod when_branch_is_checked_out { r55.listen_until_close(), r56.listen_until_close(), ); - let res = cli_tester_handle.join().unwrap()?; + let res = cli_tester_handle.await??; Ok(res) } @@ -835,72 +836,75 @@ mod when_branch_is_checked_out { r55.events.push(generate_test_key_1_metadata_event("fred")); r55.events.push(generate_test_key_1_relay_list_event()); - let cli_tester_handle = std::thread::spawn(move || -> Result<()> { - // create 3 proposals - let _ = cli_tester_create_proposals()?; - // get proposal id of first - let client = Client::new(&nostr::Keys::generate()); - client.add_relay("ws://localhost:8055")?; - client.connect_relay("ws://localhost:8055")?; - let proposals = client.get_events_of( - vec![ - nostr::Filter::default() - .kind(nostr::Kind::Custom(PATCH_KIND)) - .custom_tag( - nostr::SingleLetterTag::lowercase(nostr::Alphabet::T), - vec!["root"], - ), - ], - Some(Duration::from_millis(500)), - )?; - client.disconnect()?; - - let proposal_1_id = proposals - .iter() - .find(|e| { - e.tags - .iter() - .any(|t| t.as_vec()[1].eq(&FEATURE_BRANCH_NAME_1)) - }) - .unwrap() - .id; - // recreate proposal 1 on top of a another commit (like a rebase on top - // of one extra commit) - let second_originating_repo = GitTestRepo::default(); - second_originating_repo.populate()?; - std::fs::write( - second_originating_repo.dir.join("amazing.md"), - "some content", - )?; - second_originating_repo.stage_and_commit("commit for rebasing on top of")?; - cli_tester_create_proposal( - &second_originating_repo, - FEATURE_BRANCH_NAME_1, - "a", - Some((PROPOSAL_TITLE_1, "proposal a description")), - Some(proposal_1_id.to_string()), - )?; - - // pretend we have downloaded the origianl version of the first proposal - let test_repo = GitTestRepo::default(); - test_repo.populate()?; - create_and_populate_branch(&test_repo, FEATURE_BRANCH_NAME_1, "a", false)?; - // pretend we have pulled the updated main branch - test_repo.checkout("main")?; - std::fs::write(test_repo.dir.join("amazing.md"), "some content")?; - test_repo.stage_and_commit("commit for rebasing on top of")?; - test_repo.checkout(FEATURE_BRANCH_NAME_1)?; + let cli_tester_handle: JoinHandle> = tokio::task::spawn_blocking( + move || { + // create 3 proposals + let _ = cli_tester_create_proposals()?; + // get proposal id of first + let client = Client::default(); + Handle::current().block_on(client.add_relay("ws://localhost:8055"))?; + Handle::current().block_on(client.connect_relay("ws://localhost:8055"))?; + let proposals = Handle::current().block_on(client.get_events_of( + vec![ + nostr::Filter::default() + .kind(nostr::Kind::Custom(PATCH_KIND)) + .custom_tag( + nostr::SingleLetterTag::lowercase(nostr::Alphabet::T), + vec!["root"], + ), + ], + Some(Duration::from_millis(500)), + ))?; + Handle::current().block_on(client.disconnect())?; + + let proposal_1_id = proposals + .iter() + .find(|e| { + e.tags + .iter() + .any(|t| t.as_vec()[1].eq(&FEATURE_BRANCH_NAME_1)) + }) + .unwrap() + .id; + // recreate proposal 1 on top of a another commit (like a rebase on top + // of one extra commit) + let second_originating_repo = GitTestRepo::default(); + second_originating_repo.populate()?; + std::fs::write( + second_originating_repo.dir.join("amazing.md"), + "some content", + )?; + second_originating_repo + .stage_and_commit("commit for rebasing on top of")?; + cli_tester_create_proposal( + &second_originating_repo, + FEATURE_BRANCH_NAME_1, + "a", + Some((PROPOSAL_TITLE_1, "proposal a description")), + Some(proposal_1_id.to_string()), + )?; + + // pretend we have downloaded the origianl version of the first proposal + let test_repo = GitTestRepo::default(); + test_repo.populate()?; + create_and_populate_branch(&test_repo, FEATURE_BRANCH_NAME_1, "a", false)?; + // pretend we have pulled the updated main branch + test_repo.checkout("main")?; + std::fs::write(test_repo.dir.join("amazing.md"), "some content")?; + test_repo.stage_and_commit("commit for rebasing on top of")?; + test_repo.checkout(FEATURE_BRANCH_NAME_1)?; - let mut p = CliTester::new_from_dir(&test_repo.dir, ["pull"]); - p.expect("finding proposal root event...\r\n")?; - p.expect("found proposal root event. finding commits...\r\n")?; - p.expect_end_with("pulled new version of proposal (2 ahead 0 behind 'main'), replacing old version (2 ahead 1 behind 'main')\r\n")?; + let mut p = CliTester::new_from_dir(&test_repo.dir, ["pull"]); + p.expect("finding proposal root event...\r\n")?; + p.expect("found proposal root event. finding commits...\r\n")?; + p.expect_end_with("pulled new version of proposal (2 ahead 0 behind 'main'), replacing old version (2 ahead 1 behind 'main')\r\n")?; - for p in [51, 52, 53, 55, 56] { - relay::shutdown_relay(8000 + p)?; - } - Ok(()) - }); + for p in [51, 52, 53, 55, 56] { + relay::shutdown_relay(8000 + p)?; + } + Ok(()) + }, + ); // launch relay let _ = join!( @@ -910,7 +914,7 @@ mod when_branch_is_checked_out { r55.listen_until_close(), r56.listen_until_close(), ); - cli_tester_handle.join().unwrap()?; + cli_tester_handle.await??; println!("{:?}", r55.events); Ok(()) } -- cgit v1.2.3