diff options
author | Sebastian Thiel <sebastian.thiel@icloud.com> | 2021-06-05 11:22:11 +0800 |
---|---|---|
committer | Sebastian Thiel <sebastian.thiel@icloud.com> | 2021-06-05 11:22:11 +0800 |
commit | c3c103eebd82fc729788694a9f3bfd4ded855cf8 (patch) | |
tree | 5df3b9e37e6dee81ff76cb1010611c458f3ae247 | |
parent | 1fb6badaf653305618c62f7ba4f4332c1c1ab959 (diff) |
refactor
-rw-r--r-- | src/interactive/app/eventloop.rs | 41 | ||||
-rw-r--r-- | src/interactive/app/tests/journeys_readonly.rs | 22 | ||||
-rw-r--r-- | src/interactive/app/tests/utils.rs | 4 |
3 files changed, 43 insertions, 24 deletions
diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs index 5585c90..43160dd 100644 --- a/src/interactive/app/eventloop.rs +++ b/src/interactive/app/eventloop.rs @@ -186,6 +186,21 @@ pub struct TerminalApp { type KeyboardInputAndApp = (std::sync::mpsc::Receiver<Key>, TerminalApp); impl TerminalApp { + pub fn refresh_view<B>(&mut self, terminal: &mut Terminal<B>) + where + B: Backend, + { + // Use an event that does nothing to trigger a refresh + self.state + .process_events( + &mut self.window, + &mut self.traversal, + &mut self.display, + terminal, + std::iter::once(Key::Alt('\r')), + ) + .ok(); + } pub fn process_events<B>( &mut self, terminal: &mut Terminal<B>, @@ -208,7 +223,7 @@ impl TerminalApp { pub fn initialize<B>( terminal: &mut Terminal<B>, options: WalkOptions, - input: Vec<PathBuf>, + input_paths: Vec<PathBuf>, mode: Interaction, ) -> Result<Option<KeyboardInputAndApp>> where @@ -237,7 +252,7 @@ impl TerminalApp { let mut state = None::<AppState>; let mut received_events = false; - let traversal = Traversal::from_walk(options, input, |traversal| { + let traversal = Traversal::from_walk(options, input_paths, |traversal| { let s = match state.as_mut() { Some(s) => { s.entries = sorted_entries(&traversal.tree, s.root, s.sorting); @@ -279,14 +294,13 @@ impl TerminalApp { }; Ok(should_exit) })?; - let mut traversal = match traversal { + let traversal = match traversal { Some(t) => t, None => return Ok(None), }; - Ok(Some(( - keys_rx, - TerminalApp { + Ok(Some((keys_rx, { + let mut app = TerminalApp { state: { let mut s = state.unwrap_or_else(|| { let sorting = Default::default(); @@ -306,22 +320,15 @@ impl TerminalApp { } else { s.entries.get(0).map(|b| b.index) }; - // Force event processing with a key that doesn't do anything. - s.process_events( - &mut window, - &mut traversal, - &mut display, - terminal, - std::iter::once(Key::Alt('\r')), - ) - .ok(); s }, display, traversal, window, - }, - ))) + }; + app.refresh_view(terminal); + app + }))) } } diff --git a/src/interactive/app/tests/journeys_readonly.rs b/src/interactive/app/tests/journeys_readonly.rs index f704742..4633c1e 100644 --- a/src/interactive/app/tests/journeys_readonly.rs +++ b/src/interactive/app/tests/journeys_readonly.rs @@ -2,12 +2,24 @@ use anyhow::Result; use pretty_assertions::assert_eq; use std::ffi::OsString; -use crate::interactive::app::tests::utils::{ - fixture_str, index_by_name, initialized_app_and_terminal_from_fixture, into_keys, - node_by_index, node_by_name, +use crate::interactive::{ + app::tests::{ + utils::{ + fixture_str, index_by_name, initialized_app_and_terminal_from_fixture, into_keys, + node_by_index, node_by_name, + }, + FIXTURE_PATH, + }, + SortMode, }; -use crate::interactive::app::tests::FIXTURE_PATH; -use crate::interactive::SortMode; + +#[test] +fn init_from_pdu_results() -> Result<()> { + use crate::interactive::app::tests::utils::new_test_terminal; + let _terminal = new_test_terminal()?; + + Ok(()) +} #[test] fn simple_user_journey_read_only() -> Result<()> { diff --git a/src/interactive/app/tests/utils.rs b/src/interactive/app/tests/utils.rs index 26241d4..deea2c3 100644 --- a/src/interactive/app/tests/utils.rs +++ b/src/interactive/app/tests/utils.rs @@ -168,7 +168,7 @@ pub fn initialized_app_and_terminal_with_closure( let mut terminal = new_test_terminal()?; std::env::set_current_dir(Path::new(env!("CARGO_MANIFEST_DIR")))?; - let input = fixture_paths.iter().map(|c| convert(c.as_ref())).collect(); + let input_paths = fixture_paths.iter().map(|c| convert(c.as_ref())).collect(); let app = TerminalApp::initialize( &mut terminal, WalkOptions { @@ -179,7 +179,7 @@ pub fn initialized_app_and_terminal_with_closure( sorting: TraversalSorting::AlphabeticalByFileName, cross_filesystems: false, }, - input, + input_paths, Interaction::None, )? .map(|(_, app)| app); |