From bdf71cb3d5a5ff8399c10c8d2492d3dd01c5fa33 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Tue, 26 Nov 2024 16:28:09 +0000 Subject: test(login): update `ngit login` test to reflect the new interface and testing only nsec login --- test_utils/src/lib.rs | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) (limited to 'test_utils') diff --git a/test_utils/src/lib.rs b/test_utils/src/lib.rs index 6ca0a43..6708c81 100644 --- a/test_utils/src/lib.rs +++ b/test_utils/src/lib.rs @@ -336,6 +336,49 @@ impl CliTesterInputPrompt<'_> { } pub fn succeeds_with(&mut self, input: &str) -> Result<&mut Self> { + self.succeeds_with_optional_shortened_report(input, false) + } + + pub fn succeeds_with_optional_shortened_report( + &mut self, + input: &str, + shorten_report_to_15_chars: bool, + ) -> Result<&mut Self> { + self.tester.send_line(input)?; + self.tester + .expect(input) + .context("expect input to be printed")?; + self.tester + .expect("\r") + .context("expect new line after input to be printed")?; + + let mut s = String::new(); + let printed_input = if shorten_report_to_15_chars { + shorten_string(input) + } else { + input.to_string() + }; + self.tester + .formatter + .format_input_prompt_selection(&mut s, self.prompt.as_str(), &printed_input) + .expect("diagluer theme formatter should succeed"); + if !s.contains(self.prompt.as_str()) { + panic!("dialoguer must be broken as formatted prompt success doesnt contain prompt"); + } + let formatted_success = format!("{}\r\n", sanatize(s)); + + self.tester + .expect(formatted_success.as_str()) + .context("expect immediate prompt success")?; + Ok(self) + } + + pub fn fails_with_optional_shortened_report( + &mut self, + input: &str, + prefix: Option<&str>, + shorten_report_to_15_chars: bool, + ) -> Result<&mut Self> { self.tester.send_line(input)?; self.tester .expect(input) @@ -345,9 +388,26 @@ impl CliTesterInputPrompt<'_> { .context("expect new line after input to be printed")?; let mut s = String::new(); + let printed_input = if shorten_report_to_15_chars { + shorten_string(input) + } else { + input.to_string() + }; self.tester .formatter - .format_input_prompt_selection(&mut s, self.prompt.as_str(), input) + .format_error( + &mut s, + &format!( + "{}{}: {}", + prefix.unwrap_or_default(), + &self.prompt, + if input.is_empty() { + "empty".to_string() + } else { + format!("\"{printed_input}\"") + } + ), + ) .expect("diagluer theme formatter should succeed"); if !s.contains(self.prompt.as_str()) { panic!("dialoguer must be broken as formatted prompt success doesnt contain prompt"); @@ -361,6 +421,14 @@ impl CliTesterInputPrompt<'_> { } } +fn shorten_string(s: &str) -> String { + if s.len() < 15 { + s.to_string() + } else { + format!("{}...", &s[..15]) + } +} + pub struct CliTesterPasswordPrompt<'a> { tester: &'a mut CliTester, prompt: String, -- cgit v1.2.3