upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-08-07 10:20:48 +0100
committerDanConwayDev <DanConwayDev@protonmail.com>2024-08-07 12:13:29 +0100
commit843a3c2dfebf661bd47f0a0faf2849cc660b7349 (patch)
tree97f59116114b3372e7a504526577e8d9f20cbf0b /tests
parent406f6d70f6a71cbd8796268f6c36711e893ab9d5 (diff)
feat(remote): `fetch` applies proposal commits
that have been proposal tips returned by `list` can be found
Diffstat (limited to 'tests')
-rw-r--r--tests/git_remote_helper.rs100
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
157async 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
157mod initially_runs_fetch { 201mod 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
694mod push { 794mod push {