Skip to content

Commit

Permalink
use test terminal backend for integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dead10ck committed Jun 19, 2022
1 parent ed950fc commit 652cdda
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 18 deletions.
20 changes: 7 additions & 13 deletions helix-term/src/application.rs
Original file line number Diff line number Diff line change
Expand Up @@ -216,21 +216,15 @@ impl Application {
}

fn render(&mut self) {
#[cfg(feature = "integration")]
return;

#[allow(unreachable_code)]
{
let compositor = &mut self.compositor;
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)
Expand Down
8 changes: 4 additions & 4 deletions helix-term/src/commands.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
20 changes: 19 additions & 1 deletion helix-term/src/compositor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)>;
Expand Down Expand Up @@ -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,
Expand All @@ -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(),
Expand Down

0 comments on commit 652cdda

Please sign in to comment.