summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Thiel <sebastian.thiel@icloud.com>2021-06-05 11:22:11 +0800
committerSebastian Thiel <sebastian.thiel@icloud.com>2021-06-05 11:22:11 +0800
commitc3c103eebd82fc729788694a9f3bfd4ded855cf8 (patch)
tree5df3b9e37e6dee81ff76cb1010611c458f3ae247
parent1fb6badaf653305618c62f7ba4f4332c1c1ab959 (diff)
refactor
-rw-r--r--src/interactive/app/eventloop.rs41
-rw-r--r--src/interactive/app/tests/journeys_readonly.rs22
-rw-r--r--src/interactive/app/tests/utils.rs4
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);