Skip to content

Commit e8f54a2

Browse files
ranfdevCopilot
andcommitted
test: cover terminal combo row defensive branches
Add focused tests for missing model no-op handling and the missing signal-handler invariant path in terminal combo row rebuild logic. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 254bf49 commit e8f54a2

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

src/widgets/terminal_combo_row.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ mod tests {
224224
use super::*;
225225
use crate::backends::supported_terminals::Terminal;
226226
use crate::fakers::NullCommandRunnerBuilder;
227+
use std::panic::{AssertUnwindSafe, catch_unwind};
227228
use std::future::pending;
228229

229230
#[gtk::test]
@@ -265,4 +266,37 @@ mod tests {
265266
let selected_terminal: String = store.settings().string("selected-terminal").into();
266267
assert_eq!(selected_terminal, "Ptyxis (Flatpak)");
267268
}
269+
270+
#[gtk::test]
271+
fn test_set_selected_by_name_no_model_is_noop() {
272+
let store = RootStore::new(NullCommandRunnerBuilder::new().build());
273+
let terminal_combo_row = TerminalComboRow::new_with_params(store);
274+
275+
terminal_combo_row.set_model(Option::<&gtk::StringList>::None);
276+
let selected_before = terminal_combo_row.selected();
277+
278+
terminal_combo_row.set_selected_by_name("Ptyxis (Flatpak)");
279+
280+
assert!(terminal_combo_row.model().is_none());
281+
assert_eq!(terminal_combo_row.selected(), selected_before);
282+
}
283+
284+
#[gtk::test]
285+
fn test_rebuild_terminals_list_missing_signal_handler_invariant_path() {
286+
let store = RootStore::new(NullCommandRunnerBuilder::new().build());
287+
let terminal_combo_row = TerminalComboRow::new_with_params(store);
288+
terminal_combo_row
289+
.imp()
290+
.selected_item_signal_handler
291+
.replace(None);
292+
293+
let result = catch_unwind(AssertUnwindSafe(|| {
294+
terminal_combo_row.rebuild_terminals_list();
295+
}));
296+
297+
#[cfg(debug_assertions)]
298+
assert!(result.is_err());
299+
#[cfg(not(debug_assertions))]
300+
assert!(result.is_ok());
301+
}
268302
}

0 commit comments

Comments
 (0)