diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2024-07-31 13:42:14 +0100 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2024-07-31 13:44:46 +0100 |
| commit | 28c54378c003f7ba83099d403f19036dc2483f90 (patch) | |
| tree | d128f80220d786da635a8875d846f56a7285f9ae /tests/git_remote_helper.rs | |
| parent | cf8e2b059f94739c6f93369f73334b5227e349e1 (diff) | |
test(remote): `push`updates ref on git server
for multiple branches send in a batch
Diffstat (limited to 'tests/git_remote_helper.rs')
| -rw-r--r-- | tests/git_remote_helper.rs | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/git_remote_helper.rs b/tests/git_remote_helper.rs index ab29726..fced270 100644 --- a/tests/git_remote_helper.rs +++ b/tests/git_remote_helper.rs | |||
| @@ -248,3 +248,96 @@ mod fetch { | |||
| 248 | async_run_test().await | 248 | async_run_test().await |
| 249 | } | 249 | } |
| 250 | } | 250 | } |
| 251 | |||
| 252 | mod push { | ||
| 253 | |||
| 254 | use super::*; | ||
| 255 | |||
| 256 | mod two_branches_in_batch { | ||
| 257 | |||
| 258 | use super::*; | ||
| 259 | |||
| 260 | mod git_server_updated { | ||
| 261 | |||
| 262 | use super::*; | ||
| 263 | |||
| 264 | async fn async_run_test() -> Result<()> { | ||
| 265 | let git_repo = prep_git_repo()?; | ||
| 266 | let source_git_repo = GitTestRepo::recreate_as_bare(&git_repo)?; | ||
| 267 | |||
| 268 | std::fs::write(git_repo.dir.join("commit.md"), "some content")?; | ||
| 269 | let main_commit_id = git_repo.stage_and_commit("commit.md")?; | ||
| 270 | |||
| 271 | git_repo.create_branch("vnext")?; | ||
| 272 | git_repo.checkout("vnext")?; | ||
| 273 | std::fs::write(git_repo.dir.join("vnext.md"), "some content")?; | ||
| 274 | let vnext_commit_id = git_repo.stage_and_commit("vnext.md")?; | ||
| 275 | |||
| 276 | let events = vec![ | ||
| 277 | generate_test_key_1_metadata_event("fred"), | ||
| 278 | generate_test_key_1_relay_list_event(), | ||
| 279 | generate_repo_ref_event_with_git_server(source_git_repo.dir.to_str().unwrap()), | ||
| 280 | ]; | ||
| 281 | // fallback (51,52) user write (53, 55) repo (55, 56) blaster (57) | ||
| 282 | let (mut r51, mut r52, mut r53, mut r55, mut r56, mut r57) = ( | ||
| 283 | Relay::new(8051, None, None), | ||
| 284 | Relay::new(8052, None, None), | ||
| 285 | Relay::new(8053, None, None), | ||
| 286 | Relay::new(8055, None, None), | ||
| 287 | Relay::new(8056, None, None), | ||
| 288 | Relay::new(8057, None, None), | ||
| 289 | ); | ||
| 290 | r51.events = events.clone(); | ||
| 291 | r55.events = events; | ||
| 292 | |||
| 293 | let cli_tester_handle = std::thread::spawn(move || -> Result<()> { | ||
| 294 | assert_ne!( | ||
| 295 | source_git_repo.get_tip_of_local_branch("main")?, | ||
| 296 | main_commit_id | ||
| 297 | ); | ||
| 298 | |||
| 299 | let mut p = cli_tester_after_fetch(&git_repo)?; | ||
| 300 | p.send_line("push refs/heads/main:refs/heads/main")?; | ||
| 301 | p.send_line("push refs/heads/vnext:refs/heads/vnext")?; | ||
| 302 | p.send_line("")?; | ||
| 303 | p.expect("ok refs/heads/main\r\n")?; | ||
| 304 | p.expect("ok refs/heads/vnext\r\n")?; | ||
| 305 | p.expect("\r\n")?; | ||
| 306 | |||
| 307 | assert_eq!( | ||
| 308 | source_git_repo.get_tip_of_local_branch("main")?, | ||
| 309 | main_commit_id | ||
| 310 | ); | ||
| 311 | |||
| 312 | assert_eq!( | ||
| 313 | source_git_repo.get_tip_of_local_branch("vnext")?, | ||
| 314 | vnext_commit_id | ||
| 315 | ); | ||
| 316 | |||
| 317 | p.exit()?; | ||
| 318 | for p in [51, 52, 53, 55, 56, 57] { | ||
| 319 | relay::shutdown_relay(8000 + p)?; | ||
| 320 | } | ||
| 321 | Ok(()) | ||
| 322 | }); | ||
| 323 | // launch relays | ||
| 324 | let _ = join!( | ||
| 325 | r51.listen_until_close(), | ||
| 326 | r52.listen_until_close(), | ||
| 327 | r53.listen_until_close(), | ||
| 328 | r55.listen_until_close(), | ||
| 329 | r56.listen_until_close(), | ||
| 330 | r57.listen_until_close(), | ||
| 331 | ); | ||
| 332 | cli_tester_handle.join().unwrap()?; | ||
| 333 | Ok(()) | ||
| 334 | } | ||
| 335 | |||
| 336 | #[tokio::test] | ||
| 337 | #[serial] | ||
| 338 | async fn push_updates_ref_on_git_server() -> Result<()> { | ||
| 339 | async_run_test().await | ||
| 340 | } | ||
| 341 | } | ||
| 342 | } | ||
| 343 | } | ||