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/ngit_list.rs2
-rw-r--r--tests/ngit_send.rs86
2 files changed, 66 insertions, 22 deletions
diff --git a/tests/ngit_list.rs b/tests/ngit_list.rs
index 0547ad4..39385d6 100644
--- a/tests/ngit_list.rs
+++ b/tests/ngit_list.rs
@@ -79,7 +79,7 @@ mod cannot_find_repo_event {
79 test_repo.populate()?; 79 test_repo.populate()?;
80 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]); 80 let mut p = CliTester::new_from_dir(&test_repo.dir, ["list"]);
81 p.expect( 81 p.expect(
82 "hint: https://gitworkshop.dev/repos lists repositories and their nostr address\r\n", 82 "hint: https://gitworkshop.dev/search lists repositories and their nostr address\r\n",
83 )?; 83 )?;
84 if invalid_input { 84 if invalid_input {
85 let mut input = p.expect_input("nostr repository")?; 85 let mut input = p.expect_input("nostr repository")?;
diff --git a/tests/ngit_send.rs b/tests/ngit_send.rs
index b0c1768..a5bb564 100644
--- a/tests/ngit_send.rs
+++ b/tests/ngit_send.rs
@@ -37,6 +37,25 @@ mod when_commits_behind_ask_to_proceed {
37 Ok(test_repo) 37 Ok(test_repo)
38 } 38 }
39 39
40 fn create_relay_51() -> Result<Relay<'static>> {
41 Ok(Relay::new(
42 8051,
43 None,
44 Some(&|relay, client_id, subscription_id, _| -> Result<()> {
45 relay.respond_events(
46 client_id,
47 &subscription_id,
48 &vec![
49 generate_test_key_1_metadata_event("fred"),
50 generate_test_key_1_relay_list_event(),
51 generate_repo_ref_event(),
52 ],
53 )?;
54 Ok(())
55 }),
56 ))
57 }
58
40 fn expect_confirm_prompt(p: &mut CliTester) -> Result<CliTesterConfirmPrompt> { 59 fn expect_confirm_prompt(p: &mut CliTester) -> Result<CliTesterConfirmPrompt> {
41 p.expect("fetching updates...\r\n")?; 60 p.expect("fetching updates...\r\n")?;
42 p.expect_eventually("\r\n")?; // may be 'no updates' or some updates 61 p.expect_eventually("\r\n")?; // may be 'no updates' or some updates
@@ -49,37 +68,62 @@ mod when_commits_behind_ask_to_proceed {
49 ) 68 )
50 } 69 }
51 70
52 #[test] 71 #[tokio::test]
53 fn asked_with_default_no() -> Result<()> { 72 #[serial]
73 async fn asked_with_default_no() -> Result<()> {
54 let test_repo = prep_test_repo()?; 74 let test_repo = prep_test_repo()?;
75 let mut r51 = create_relay_51()?;
76 // // check relay had the right number of events
77 let cli_tester_handle = std::thread::spawn(move || -> Result<()> {
78 let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]);
79 expect_confirm_prompt(&mut p)?;
80 p.exit()?;
81 relay::shutdown_relay(8051)?;
82 Ok(())
83 });
55 84
56 let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); 85 // launch relay
57 expect_confirm_prompt(&mut p)?; 86 r51.listen_until_close().await?;
58 p.exit()?; 87 cli_tester_handle.join().unwrap()?;
59 Ok(()) 88 Ok(())
60 } 89 }
61 90
62 #[test] 91 #[tokio::test]
63 fn when_response_is_false_aborts() -> Result<()> { 92 #[serial]
93 async fn when_response_is_false_aborts() -> Result<()> {
64 let test_repo = prep_test_repo()?; 94 let test_repo = prep_test_repo()?;
95 let mut r51 = create_relay_51()?;
96 let cli_tester_handle = std::thread::spawn(move || -> Result<()> {
97 let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]);
98 expect_confirm_prompt(&mut p)?.succeeds_with(Some(false))?;
99 p.expect_end_with("Error: aborting so commits can be rebased\r\n")?;
100 relay::shutdown_relay(8051)?;
101 Ok(())
102 });
65 103
66 let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); 104 // launch relay
67 105 r51.listen_until_close().await?;
68 expect_confirm_prompt(&mut p)?.succeeds_with(Some(false))?; 106 cli_tester_handle.join().unwrap()?;
69
70 p.expect_end_with("Error: aborting so commits can be rebased\r\n")?;
71
72 Ok(()) 107 Ok(())
73 } 108 }
74 #[test] 109
110 #[tokio::test]
75 #[serial] 111 #[serial]
76 fn when_response_is_true_proceeds() -> Result<()> { 112 async fn when_response_is_true_proceeds() -> Result<()> {
77 let test_repo = prep_test_repo()?; 113 let test_repo = prep_test_repo()?;
114 let mut r51 = create_relay_51()?;
115 let cli_tester_handle = std::thread::spawn(move || -> Result<()> {
116 let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]);
117 expect_confirm_prompt(&mut p)?.succeeds_with(Some(true))?;
118 p.expect("? include cover letter")?;
119 p.exit()?;
120 relay::shutdown_relay(8051)?;
121 Ok(())
122 });
78 123
79 let mut p = CliTester::new_from_dir(&test_repo.dir, ["send", "HEAD~2"]); 124 // launch relay
80 expect_confirm_prompt(&mut p)?.succeeds_with(Some(true))?; 125 r51.listen_until_close().await?;
81 p.expect("? include cover letter")?; 126 cli_tester_handle.join().unwrap()?;
82 p.exit()?;
83 Ok(()) 127 Ok(())
84 } 128 }
85} 129}
@@ -158,7 +202,7 @@ fn expect_msgs_first(p: &mut CliTester, include_cover_letter: bool) -> Result<()
158} 202}
159 203
160fn expect_msgs_after(p: &mut CliTester) -> Result<()> { 204fn expect_msgs_after(p: &mut CliTester) -> Result<()> {
161 p.expect_after_whitespace("view in gitworkshop.dev: https://gitworkshop.dev/repo")?; 205 p.expect_after_whitespace("view in gitworkshop.dev: https://gitworkshop.dev/")?;
162 p.expect_eventually("\r\n")?; 206 p.expect_eventually("\r\n")?;
163 p.expect("view in another client: https://njump.me/")?; 207 p.expect("view in another client: https://njump.me/")?;
164 p.expect_eventually("\r\n")?; 208 p.expect_eventually("\r\n")?;
@@ -1619,7 +1663,7 @@ mod root_proposal_specified_using_in_reply_to_with_range_of_head_2_and_cover_let
1619 .unwrap() 1663 .unwrap()
1620 .as_slice()[1], 1664 .as_slice()[1],
1621 // id of state nevent 1665 // id of state nevent
1622 "431e58eb8e1b4e20292d1d5bbe81d5cfb042e1bc165de32eddfdd52245a4cce4", 1666 "000c104861e34a453481ab23e7de21a6baf475b394479705363b035936732528",
1623 ); 1667 );
1624 } 1668 }
1625 Ok(()) 1669 Ok(())