use test terminal backend for integration tests
This commit is contained in:
parent
ed950fcc56
commit
652cdda833
3 changed files with 30 additions and 18 deletions
|
@ -216,21 +216,15 @@ impl Application {
|
|||
}
|
||||
|
||||
fn render(&mut self) {
|
||||
#[cfg(feature = "integration")]
|
||||
return;
|
||||
let compositor = &mut self.compositor;
|
||||
|
||||
#[allow(unreachable_code)]
|
||||
{
|
||||
let compositor = &mut self.compositor;
|
||||
let mut cx = crate::compositor::Context {
|
||||
editor: &mut self.editor,
|
||||
jobs: &mut self.jobs,
|
||||
scroll: None,
|
||||
};
|
||||
|
||||
let mut cx = crate::compositor::Context {
|
||||
editor: &mut self.editor,
|
||||
jobs: &mut self.jobs,
|
||||
scroll: None,
|
||||
};
|
||||
|
||||
compositor.render(&mut cx);
|
||||
}
|
||||
compositor.render(&mut cx);
|
||||
}
|
||||
|
||||
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()
|
||||
);
|
||||
|
||||
let selection = doc.selection(view.id).clone().transform(|range| {
|
||||
let new_range = Range::new(range.to(), range.from());
|
||||
new_range
|
||||
});
|
||||
let selection = doc
|
||||
.selection(view.id)
|
||||
.clone()
|
||||
.transform(|range| Range::new(range.to(), range.from()));
|
||||
|
||||
doc.set_selection(view.id, selection);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,9 @@ use helix_core::Position;
|
|||
use helix_view::graphics::{CursorKind, Rect};
|
||||
|
||||
use crossterm::event::Event;
|
||||
|
||||
#[cfg(feature = "integration")]
|
||||
use tui::backend::TestBackend;
|
||||
use tui::buffer::Buffer as Surface;
|
||||
|
||||
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 tui::backend::Backend;
|
||||
|
||||
#[cfg(not(feature = "integration"))]
|
||||
use tui::backend::CrosstermBackend;
|
||||
|
||||
#[cfg(not(feature = "integration"))]
|
||||
use std::io::stdout;
|
||||
use tui::backend::{Backend, CrosstermBackend};
|
||||
|
||||
#[cfg(not(feature = "integration"))]
|
||||
type Terminal = tui::terminal::Terminal<CrosstermBackend<std::io::Stdout>>;
|
||||
|
||||
#[cfg(feature = "integration")]
|
||||
type Terminal = tui::terminal::Terminal<TestBackend>;
|
||||
|
||||
pub struct Compositor {
|
||||
layers: Vec<Box<dyn Component>>,
|
||||
terminal: Terminal,
|
||||
|
@ -77,7 +90,12 @@ pub struct Compositor {
|
|||
|
||||
impl Compositor {
|
||||
pub fn new() -> anyhow::Result<Self> {
|
||||
#[cfg(not(feature = "integration"))]
|
||||
let backend = CrosstermBackend::new(stdout());
|
||||
|
||||
#[cfg(feature = "integration")]
|
||||
let backend = TestBackend::new(120, 150);
|
||||
|
||||
let terminal = Terminal::new(backend).context("build terminal")?;
|
||||
Ok(Self {
|
||||
layers: Vec::new(),
|
||||
|
|
Loading…
Reference in a new issue