Move tester to a new iced_tester subcrate

This commit is contained in:
Héctor Ramón Jiménez 2025-08-29 08:39:44 +02:00
parent 9e81c2b9e8
commit 4f7444bddf
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
28 changed files with 392 additions and 355 deletions

View file

@ -30,12 +30,14 @@
//! ]
//! }
//! ```
use crate::message;
use crate::program::{self, Program};
use crate::shell;
use crate::theme;
use crate::window;
use crate::{
Element, Executor, Font, Preset, Result, Settings, Size, Subscription, Task,
Element, Executor, Font, MaybeSend, Preset, Result, Settings, Size,
Subscription, Task,
};
use iced_debug as debug;
@ -81,7 +83,7 @@ pub fn application<State, Message, Theme, Renderer>(
) -> Application<impl Program<State = State, Message = Message, Theme = Theme>>
where
State: 'static,
Message: program::Message + 'static,
Message: MaybeSend + 'static,
Theme: Default + theme::Base,
Renderer: program::Renderer,
{
@ -100,7 +102,7 @@ where
impl<State, Message, Theme, Renderer, Boot, Update, View> Program
for Instance<State, Message, Theme, Renderer, Boot, Update, View>
where
Message: program::Message + 'static,
Message: MaybeSend + 'static,
Theme: Default + theme::Base,
Renderer: program::Renderer,
Boot: self::Boot<State, Message>,
@ -142,6 +144,10 @@ where
fn settings(&self) -> Settings {
Settings::default()
}
fn window(&self) -> Option<iced_core::window::Settings> {
Some(window::Settings::default())
}
}
Application {
@ -180,25 +186,25 @@ impl<P: Program> Application<P> {
pub fn run(self) -> Result
where
Self: 'static,
P::Message: message::MaybeDebug + message::MaybeClone,
{
let settings = self.settings.clone();
let window = self.window.clone();
#[cfg(feature = "debug")]
iced_debug::init(iced_debug::Metadata {
name: P::name(),
theme: None,
can_time_travel: cfg!(feature = "time-travel"),
});
#[cfg(all(feature = "debug", not(target_arch = "wasm32")))]
let program = {
iced_debug::init(iced_debug::Metadata {
name: P::name(),
theme: None,
can_time_travel: cfg!(feature = "time-travel"),
});
#[cfg(feature = "tester")]
let program = iced_tester::attach(self);
iced_devtools::attach(self)
};
#[cfg(all(feature = "debug", not(feature = "tester")))]
let program = iced_devtools::attach(self);
#[cfg(any(not(feature = "debug"), target_arch = "wasm32"))]
let program = self;
Ok(shell::run(program, settings, Some(window))?)
Ok(shell::run(program)?)
}
/// Sets the [`Settings`] that will be used to run the [`Application`].
@ -456,6 +462,10 @@ impl<P: Program> Program for Application<P> {
self.settings.clone()
}
fn window(&self) -> Option<window::Settings> {
Some(self.window.clone())
}
fn boot(&self) -> (Self::State, Task<Self::Message>) {
self.raw.boot()
}

View file

@ -29,7 +29,7 @@ pub fn timed<State, Message, Theme, Renderer>(
>
where
State: 'static,
Message: program::Message + 'static,
Message: Send + 'static,
Theme: Default + theme::Base + 'static,
Renderer: program::Renderer + 'static,
{
@ -68,7 +68,7 @@ where
View,
>
where
Message: program::Message + 'static,
Message: Send + 'static,
Theme: Default + theme::Base + 'static,
Renderer: program::Renderer + 'static,
Boot: self::Boot<State, Message>,
@ -92,6 +92,10 @@ where
Settings::default()
}
fn window(&self) -> Option<iced_core::window::Settings> {
Some(window::Settings::default())
}
fn boot(&self) -> (State, Task<Self::Message>) {
let (state, task) = self.boot.boot();

View file

@ -1,11 +1,13 @@
//! Create and run daemons that run in the background.
use crate::application;
use crate::message;
use crate::program::{self, Program};
use crate::shell;
use crate::theme;
use crate::window;
use crate::{
Element, Executor, Font, Preset, Result, Settings, Subscription, Task,
Element, Executor, Font, MaybeSend, Preset, Result, Settings, Subscription,
Task,
};
use iced_debug as debug;
@ -29,7 +31,7 @@ pub fn daemon<State, Message, Theme, Renderer>(
) -> Daemon<impl Program<State = State, Message = Message, Theme = Theme>>
where
State: 'static,
Message: program::Message + 'static,
Message: MaybeSend + 'static,
Theme: Default + theme::Base,
Renderer: program::Renderer,
{
@ -48,7 +50,7 @@ where
impl<State, Message, Theme, Renderer, Boot, Update, View> Program
for Instance<State, Message, Theme, Renderer, Boot, Update, View>
where
Message: program::Message + 'static,
Message: MaybeSend + 'static,
Theme: Default + theme::Base,
Renderer: program::Renderer,
Boot: application::Boot<State, Message>,
@ -71,6 +73,10 @@ where
Settings::default()
}
fn window(&self) -> Option<iced_core::window::Settings> {
None
}
fn boot(&self) -> (Self::State, Task<Self::Message>) {
self.boot.boot()
}
@ -126,9 +132,8 @@ impl<P: Program> Daemon<P> {
pub fn run(self) -> Result
where
Self: 'static,
P::Message: message::MaybeDebug + message::MaybeClone,
{
let settings = self.settings.clone();
#[cfg(all(feature = "debug", not(target_arch = "wasm32")))]
let program = {
iced_debug::init(iced_debug::Metadata {
@ -143,7 +148,7 @@ impl<P: Program> Daemon<P> {
#[cfg(any(not(feature = "debug"), target_arch = "wasm32"))]
let program = self;
Ok(shell::run(program, settings, None)?)
Ok(shell::run(program)?)
}
/// Sets the [`Settings`] that will be used to run the [`Daemon`].
@ -298,6 +303,10 @@ impl<P: Program> Program for Daemon<P> {
self.settings.clone()
}
fn window(&self) -> Option<window::Settings> {
None
}
fn boot(&self) -> (Self::State, Task<Self::Message>) {
self.raw.boot()
}

View file

@ -526,7 +526,9 @@ pub use crate::core::{
Rotation, Settings, Shadow, Size, Theme, Transformation, Vector, never,
};
pub use crate::program::Preset;
pub use crate::program::message;
pub use crate::runtime::exit;
pub use crate::runtime::futures::MaybeSend;
pub use iced_futures::Subscription;
pub use Alignment::Center;
@ -696,7 +698,7 @@ pub fn run<State, Message, Theme, Renderer>(
) -> Result
where
State: Default + 'static,
Message: program::Message + 'static,
Message: MaybeSend + message::MaybeDebug + message::MaybeClone + 'static,
Theme: Default + theme::Base + 'static,
Renderer: program::Renderer + 'static,
{