upleb.uk

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

summaryrefslogtreecommitdiff
path: root/tests/git_remote_helper.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2024-07-31 12:23:26 +0100
committerDanConwayDev <DanConwayDev@protonmail.com>2024-07-31 12:23:26 +0100
commit497a9fa40bffe8ce41a1c658a520be0690d98377 (patch)
tree0e3a54b43da8de24a43c4b12b5059112212c8927 /tests/git_remote_helper.rs
parentf47c02853987c83905722eead6b68e32b9bd28c8 (diff)
test(remote): `fetch` downloads commits
from git server specified in announcement
Diffstat (limited to 'tests/git_remote_helper.rs')
-rw-r--r--tests/git_remote_helper.rs71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/git_remote_helper.rs b/tests/git_remote_helper.rs
index d473214..ab29726 100644
--- a/tests/git_remote_helper.rs
+++ b/tests/git_remote_helper.rs
@@ -177,3 +177,74 @@ mod list {
177 async_run_test().await 177 async_run_test().await
178 } 178 }
179} 179}
180
181mod fetch {
182
183 use super::*;
184
185 async fn async_run_test() -> Result<()> {
186 let source_git_repo = prep_git_repo()?;
187 std::fs::write(source_git_repo.dir.join("commit.md"), "some content")?;
188 let main_commit_id = source_git_repo.stage_and_commit("commit.md")?;
189
190 source_git_repo.create_branch("vnext")?;
191 source_git_repo.checkout("vnext")?;
192 std::fs::write(source_git_repo.dir.join("vnext.md"), "some content")?;
193 let vnext_commit_id = source_git_repo.stage_and_commit("vnext.md")?;
194
195 let git_repo = prep_git_repo()?;
196 let events = vec![
197 generate_test_key_1_metadata_event("fred"),
198 generate_test_key_1_relay_list_event(),
199 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()),
200 ];
201 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
202 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
203 Relay::new(8051, None, None),
204 Relay::new(8052, None, None),
205 Relay::new(8053, None, None),
206 Relay::new(8055, None, None),
207 Relay::new(8056, None, None),
208 Relay::new(8057, None, None),
209 );
210 r51.events = events.clone();
211 r55.events = events;
212
213 let cli_tester_handle = std::thread::spawn(move || -> Result<()> {
214 assert!(git_repo.git_repo.find_commit(main_commit_id).is_err());
215 assert!(git_repo.git_repo.find_commit(vnext_commit_id).is_err());
216
217 let mut p = cli_tester_after_fetch(&git_repo)?;
218 p.send_line(format!("fetch {main_commit_id} main").as_str())?;
219 p.send_line(format!("fetch {vnext_commit_id} vnext").as_str())?;
220 p.send_line("")?;
221 p.expect("\r\n")?;
222
223 assert!(git_repo.git_repo.find_commit(main_commit_id).is_ok());
224 assert!(git_repo.git_repo.find_commit(vnext_commit_id).is_ok());
225
226 p.exit()?;
227 for p in [51, 52, 53, 55, 56, 57] {
228 relay::shutdown_relay(8000 + p)?;
229 }
230 Ok(())
231 });
232 // launch relays
233 let _ = join!(
234 r51.listen_until_close(),
235 r52.listen_until_close(),
236 r53.listen_until_close(),
237 r55.listen_until_close(),
238 r56.listen_until_close(),
239 r57.listen_until_close(),
240 );
241 cli_tester_handle.join().unwrap()?;
242 Ok(())
243 }
244
245 #[tokio::test]
246 #[serial]
247 async fn fetch_downloads_speficied_branch_ref_commits_from_git_server() -> Result<()> {
248 async_run_test().await
249 }
250}