diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/git_remote_helper.rs | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/git_remote_helper.rs b/tests/git_remote_helper.rs index bfe0e25..66a0be5 100644 --- a/tests/git_remote_helper.rs +++ b/tests/git_remote_helper.rs | |||
| @@ -154,6 +154,50 @@ async fn generate_repo_with_state_event() -> Result<(nostr::Event, GitTestRepo)> | |||
| 154 | Ok((state_event.clone(), source_git_repo)) | 154 | Ok((state_event.clone(), source_git_repo)) |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | async fn prep_source_repo_and_events_including_proposals() | ||
| 158 | -> Result<(Vec<nostr::Event>, GitTestRepo)> { | ||
| 159 | let (state_event, source_git_repo) = generate_repo_with_state_event().await?; | ||
| 160 | let source_path = source_git_repo.dir.to_str().unwrap().to_string(); | ||
| 161 | |||
| 162 | let events = vec![ | ||
| 163 | generate_test_key_1_metadata_event("fred"), | ||
| 164 | generate_test_key_1_relay_list_event(), | ||
| 165 | generate_repo_ref_event_with_git_server(vec![source_path.to_string()]), | ||
| 166 | state_event, | ||
| 167 | ]; | ||
| 168 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | ||
| 169 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | ||
| 170 | Relay::new(8051, None, None), | ||
| 171 | Relay::new(8052, None, None), | ||
| 172 | Relay::new(8053, None, None), | ||
| 173 | Relay::new(8055, None, None), | ||
| 174 | Relay::new(8056, None, None), | ||
| 175 | Relay::new(8057, None, None), | ||
| 176 | ); | ||
| 177 | r51.events = events.clone(); | ||
| 178 | r55.events = events; | ||
| 179 | |||
| 180 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | ||
| 181 | cli_tester_create_proposals()?; | ||
| 182 | for p in [51, 52, 53, 55, 56, 57] { | ||
| 183 | relay::shutdown_relay(8000 + p)?; | ||
| 184 | } | ||
| 185 | Ok(()) | ||
| 186 | }); | ||
| 187 | // launch relays | ||
| 188 | let _ = join!( | ||
| 189 | r51.listen_until_close(), | ||
| 190 | r52.listen_until_close(), | ||
| 191 | r53.listen_until_close(), | ||
| 192 | r55.listen_until_close(), | ||
| 193 | r56.listen_until_close(), | ||
| 194 | r57.listen_until_close(), | ||
| 195 | ); | ||
| 196 | cli_tester_handle.join().unwrap()?; | ||
| 197 | |||
| 198 | Ok((r55.events, source_git_repo)) | ||
| 199 | } | ||
| 200 | |||
| 157 | mod initially_runs_fetch { | 201 | mod initially_runs_fetch { |
| 158 | 202 | ||
| 159 | use super::*; | 203 | use super::*; |
| @@ -689,6 +733,62 @@ mod fetch { | |||
| 689 | Ok(()) | 733 | Ok(()) |
| 690 | } | 734 | } |
| 691 | } | 735 | } |
| 736 | |||
| 737 | #[tokio::test] | ||
| 738 | #[serial] | ||
| 739 | async fn creates_commits_from_open_proposal_with_no_warngins_printed() -> Result<()> { | ||
| 740 | let (events, source_git_repo) = prep_source_repo_and_events_including_proposals().await?; | ||
| 741 | let source_path = source_git_repo.dir.to_str().unwrap().to_string(); | ||
| 742 | |||
| 743 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | ||
| 744 | Relay::new(8051, None, None), | ||
| 745 | Relay::new(8052, None, None), | ||
| 746 | Relay::new(8053, None, None), | ||
| 747 | Relay::new(8055, None, None), | ||
| 748 | Relay::new(8056, None, None), | ||
| 749 | Relay::new(8057, None, None), | ||
| 750 | ); | ||
| 751 | r51.events = events.clone(); | ||
| 752 | r55.events = events.clone(); | ||
| 753 | |||
| 754 | let git_repo = prep_git_repo()?; | ||
| 755 | |||
| 756 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | ||
| 757 | let branch_name = get_proposal_branch_name_from_events(&events, FEATURE_BRANCH_NAME_1)?; | ||
| 758 | let proposal_tip = cli_tester_create_proposal_branches_ready_to_send()? | ||
| 759 | .get_tip_of_local_branch(FEATURE_BRANCH_NAME_1)?; | ||
| 760 | |||
| 761 | assert!(git_repo.git_repo.find_commit(proposal_tip).is_err()); | ||
| 762 | |||
| 763 | let mut p = cli_tester_after_fetch(&git_repo)?; | ||
| 764 | p.send_line(format!("fetch {proposal_tip} refs/heads/{branch_name}").as_str())?; | ||
| 765 | p.send_line("")?; | ||
| 766 | p.expect(format!("fetching from {source_path}...\r\n").as_str())?; | ||
| 767 | // expect no errors | ||
| 768 | p.expect_after_whitespace("\r\n")?; | ||
| 769 | p.exit()?; | ||
| 770 | for p in [51, 52, 53, 55, 56, 57] { | ||
| 771 | relay::shutdown_relay(8000 + p)?; | ||
| 772 | } | ||
| 773 | |||
| 774 | assert!(git_repo.git_repo.find_commit(proposal_tip).is_ok()); | ||
| 775 | |||
| 776 | Ok(()) | ||
| 777 | }); | ||
| 778 | // launch relays | ||
| 779 | let _ = join!( | ||
| 780 | r51.listen_until_close(), | ||
| 781 | r52.listen_until_close(), | ||
| 782 | r53.listen_until_close(), | ||
| 783 | r55.listen_until_close(), | ||
| 784 | r56.listen_until_close(), | ||
| 785 | r57.listen_until_close(), | ||
| 786 | ); | ||
| 787 | |||
| 788 | cli_tester_handle.join().unwrap()?; | ||
| 789 | |||
| 790 | Ok(()) | ||
| 791 | } | ||
| 692 | } | 792 | } |
| 693 | 793 | ||
| 694 | mod push { | 794 | mod push { |