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:
Diffstat (limited to 'tests')
-rw-r--r--tests/git_remote_helper.rs90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/git_remote_helper.rs b/tests/git_remote_helper.rs
index fced270..7b81609 100644
--- a/tests/git_remote_helper.rs
+++ b/tests/git_remote_helper.rs
@@ -339,5 +339,95 @@ mod push {
339 async_run_test().await 339 async_run_test().await
340 } 340 }
341 } 341 }
342 mod remote_refs_updated {
343
344 use super::*;
345
346 async fn async_run_test() -> Result<()> {
347 let git_repo = prep_git_repo()?;
348 let source_git_repo = GitTestRepo::recreate_as_bare(&git_repo)?;
349
350 std::fs::write(git_repo.dir.join("commit.md"), "some content")?;
351 let main_commit_id = git_repo.stage_and_commit("commit.md")?;
352
353 git_repo.create_branch("vnext")?;
354 git_repo.checkout("vnext")?;
355 std::fs::write(git_repo.dir.join("vnext.md"), "some content")?;
356 let vnext_commit_id = git_repo.stage_and_commit("vnext.md")?;
357
358 let events = vec![
359 generate_test_key_1_metadata_event("fred"),
360 generate_test_key_1_relay_list_event(),
361 generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()),
362 ];
363 // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57)
364 let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = (
365 Relay::new(8051, None, None),
366 Relay::new(8052, None, None),
367 Relay::new(8053, None, None),
368 Relay::new(8055, None, None),
369 Relay::new(8056, None, None),
370 Relay::new(8057, None, None),
371 );
372 r51.events = events.clone();
373 r55.events = events;
374
375 let cli_tester_handle = std::thread::spawn(move || -> Result<()> {
376 assert_ne!(
377 source_git_repo.get_tip_of_local_branch("main")?,
378 main_commit_id
379 );
380
381 let mut p = cli_tester_after_fetch(&git_repo)?;
382 p.send_line("push refs/heads/main:refs/heads/main")?;
383 p.send_line("push refs/heads/vnext:refs/heads/vnext")?;
384 p.send_line("")?;
385 p.expect("ok refs/heads/main\r\n")?;
386 p.expect("ok refs/heads/vnext\r\n")?;
387 p.expect("\r\n")?;
388
389 assert_eq!(
390 git_repo
391 .git_repo
392 .find_reference("refs/remotes/nostr/main")?
393 .peel_to_commit()?
394 .id(),
395 main_commit_id,
396 );
397
398 assert_eq!(
399 git_repo
400 .git_repo
401 .find_reference("refs/remotes/nostr/vnext")?
402 .peel_to_commit()?
403 .id(),
404 vnext_commit_id
405 );
406
407 p.exit()?;
408 for p in [51, 52, 53, 55, 56, 57] {
409 relay::shutdown_relay(8000 + p)?;
410 }
411 Ok(())
412 });
413 // launch relays
414 let _ = join!(
415 r51.listen_until_close(),
416 r52.listen_until_close(),
417 r53.listen_until_close(),
418 r55.listen_until_close(),
419 r56.listen_until_close(),
420 r57.listen_until_close(),
421 );
422 cli_tester_handle.join().unwrap()?;
423 Ok(())
424 }
425
426 #[tokio::test]
427 #[serial]
428 async fn push_updates_refs() -> Result<()> {
429 async_run_test().await
430 }
431 }
342 } 432 }
343} 433}