From d7f130cb2fdeef57222b309dff17de99d8b1a01c Mon Sep 17 00:00:00 2001 From: altsem Date: Wed, 27 Mar 2024 23:18:55 +0100 Subject: [PATCH] don't try read arg input outside of a pending menu --- src/state.rs | 2 +- src/tests/mod.rs | 10 ++++ ...push__open_push_menu_after_dash_input.snap | 47 +++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/tests/snapshots/gitu__tests__push__open_push_menu_after_dash_input.snap diff --git a/src/state.rs b/src/state.rs index 8aef7a6377..b602895ed6 100644 --- a/src/state.rs +++ b/src/state.rs @@ -133,7 +133,7 @@ impl State { keybinds::op_of_key_event(pending, key) }; - self.next_input_is_arg = key.code == KeyCode::Char('-'); + self.next_input_is_arg = pending.is_some() && key.code == KeyCode::Char('-'); if let Some(op) = maybe_op { let result = handle_op(self, op, term); diff --git a/src/tests/mod.rs b/src/tests/mod.rs index e264fcaa53..d5d049713c 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -347,6 +347,16 @@ mod push { .unwrap(); insta::assert_snapshot!(ctx.redact_buffer()); } + + #[test] + fn open_push_menu_after_dash_input() { + let mut ctx = TestContext::setup_clone(80, 10); + commit(ctx.dir.path(), "new-file", ""); + + let mut state = ctx.init_state(); + state.update(&mut ctx.term, &[key('-'), key('P')]).unwrap(); + insta::assert_snapshot!(ctx.redact_buffer()); + } } #[test] diff --git a/src/tests/snapshots/gitu__tests__push__open_push_menu_after_dash_input.snap b/src/tests/snapshots/gitu__tests__push__open_push_menu_after_dash_input.snap new file mode 100644 index 0000000000..936230bbb2 --- /dev/null +++ b/src/tests/snapshots/gitu__tests__push__open_push_menu_after_dash_input.snap @@ -0,0 +1,47 @@ +--- +source: src/tests/mod.rs +expression: ctx.redact_buffer() +--- +Buffer { + area: Rect { x: 0, y: 0, width: 80, height: 10 }, + content: [ + "▌On branch main ", + "▌Your branch is ahead of 'origin/main' by 1 commit. ", + " ", + " Recent commits ", + " _______ main add new-file ", + " _______ origin/main add initial-file ", + "────────────────────────────────────────────────────────────────────────────────", + "Push Arguments ", + "p Push -f --force-with-lease (off) ", + "q esc Quit/Close ", + ], + styles: [ + x: 0, y: 0, fg: Blue, bg: Reset, underline: Reset, modifier: BOLD, + x: 1, y: 0, fg: Yellow, bg: Reset, underline: Reset, modifier: BOLD, + x: 0, y: 1, fg: Blue, bg: Reset, underline: Reset, modifier: DIM, + x: 1, y: 1, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 1, y: 3, fg: Yellow, bg: Reset, underline: Reset, modifier: NONE, + x: 0, y: 4, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 1, y: 4, fg: Yellow, bg: Reset, underline: Reset, modifier: NONE, + x: 8, y: 4, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 9, y: 4, fg: Green, bg: Reset, underline: Reset, modifier: NONE, + x: 13, y: 4, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 1, y: 5, fg: Yellow, bg: Reset, underline: Reset, modifier: NONE, + x: 8, y: 5, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 9, y: 5, fg: Red, bg: Reset, underline: Reset, modifier: NONE, + x: 20, y: 5, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 0, y: 6, fg: Reset, bg: Reset, underline: Reset, modifier: DIM, + x: 0, y: 7, fg: Blue, bg: Reset, underline: Reset, modifier: BOLD, + x: 28, y: 7, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 42, y: 7, fg: Blue, bg: Reset, underline: Reset, modifier: BOLD, + x: 72, y: 7, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 0, y: 8, fg: Magenta, bg: Reset, underline: Reset, modifier: NONE, + x: 1, y: 8, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 42, y: 8, fg: Magenta, bg: Reset, underline: Reset, modifier: NONE, + x: 44, y: 8, fg: Reset, bg: Reset, underline: Reset, modifier: DIM, + x: 69, y: 8, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + x: 0, y: 9, fg: Magenta, bg: Reset, underline: Reset, modifier: NONE, + x: 5, y: 9, fg: Reset, bg: Reset, underline: Reset, modifier: NONE, + ] +}