use test terminal backend for integration tests

pull/2359/head
Skyler Hawthorne 2 years ago
parent ed950fcc56
commit 652cdda833

@ -216,21 +216,15 @@ impl Application {
} }
fn render(&mut self) { fn render(&mut self) {
#[cfg(feature = "integration")] let compositor = &mut self.compositor;
return;
#[allow(unreachable_code)]
{
let compositor = &mut self.compositor;
let mut cx = crate::compositor::Context { let mut cx = crate::compositor::Context {
editor: &mut self.editor, editor: &mut self.editor,
jobs: &mut self.jobs, jobs: &mut self.jobs,
scroll: None, scroll: None,
}; };
compositor.render(&mut cx); compositor.render(&mut cx);
}
} }
pub async fn event_loop<S>(&mut self, input_stream: &mut S) pub async fn event_loop<S>(&mut self, input_stream: &mut S)

@ -2100,10 +2100,10 @@ fn insert_mode(cx: &mut Context) {
doc.text().to_string() doc.text().to_string()
); );
let selection = doc.selection(view.id).clone().transform(|range| { let selection = doc
let new_range = Range::new(range.to(), range.from()); .selection(view.id)
new_range .clone()
}); .transform(|range| Range::new(range.to(), range.from()));
doc.set_selection(view.id, selection); doc.set_selection(view.id, selection);
} }

@ -5,6 +5,9 @@ use helix_core::Position;
use helix_view::graphics::{CursorKind, Rect}; use helix_view::graphics::{CursorKind, Rect};
use crossterm::event::Event; use crossterm::event::Event;
#[cfg(feature = "integration")]
use tui::backend::TestBackend;
use tui::buffer::Buffer as Surface; use tui::buffer::Buffer as Surface;
pub type Callback = Box<dyn FnOnce(&mut Compositor, &mut Context)>; pub type Callback = Box<dyn FnOnce(&mut Compositor, &mut Context)>;
@ -64,10 +67,20 @@ pub trait Component: Any + AnyComponent {
} }
use anyhow::Context as AnyhowContext; use anyhow::Context as AnyhowContext;
use tui::backend::Backend;
#[cfg(not(feature = "integration"))]
use tui::backend::CrosstermBackend;
#[cfg(not(feature = "integration"))]
use std::io::stdout; use std::io::stdout;
use tui::backend::{Backend, CrosstermBackend};
#[cfg(not(feature = "integration"))]
type Terminal = tui::terminal::Terminal<CrosstermBackend<std::io::Stdout>>; type Terminal = tui::terminal::Terminal<CrosstermBackend<std::io::Stdout>>;
#[cfg(feature = "integration")]
type Terminal = tui::terminal::Terminal<TestBackend>;
pub struct Compositor { pub struct Compositor {
layers: Vec<Box<dyn Component>>, layers: Vec<Box<dyn Component>>,
terminal: Terminal, terminal: Terminal,
@ -77,7 +90,12 @@ pub struct Compositor {
impl Compositor { impl Compositor {
pub fn new() -> anyhow::Result<Self> { pub fn new() -> anyhow::Result<Self> {
#[cfg(not(feature = "integration"))]
let backend = CrosstermBackend::new(stdout()); let backend = CrosstermBackend::new(stdout());
#[cfg(feature = "integration")]
let backend = TestBackend::new(120, 150);
let terminal = Terminal::new(backend).context("build terminal")?; let terminal = Terminal::new(backend).context("build terminal")?;
Ok(Self { Ok(Self {
layers: Vec::new(), layers: Vec::new(),

Loading…
Cancel
Save