public inbox for tools@linux.kernel.org
 help / color / mirror / Atom feed
From: Jiri Slaby <jirislaby@kernel.org>
To: Konstantin Ryabitsev <konstantin@linuxfoundation.org>,
	users@kernel.org, tools@kernel.org
Subject: Re: b4 v0.15.0 released
Date: Tue, 24 Mar 2026 08:26:15 +0100	[thread overview]
Message-ID: <2c35a708-0ff6-4fe0-8974-2e786dadff6e@kernel.org> (raw)
In-Reply-To: <20260320-portable-jaybird-of-focus-41fd66@lemur>

On 20. 03. 26, 21:47, Konstantin Ryabitsev wrote:
> Hi, all:
> 
> B4 v0.15.0 is now available! Install or upgrade using your usual mechanism.

Hi,

the TUI tests fail for me (while packaging for openSUSE):

> FAILED src/tests/test_tui_tracking.py::TestTrackingAppStartup::test_empty_database - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingAppStartup::test_series_listed - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingAppStartup::test_title_shows_identifier_and_count - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingAppStartup::test_series_sorted_by_added_at - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingNavigation::test_jk_navigation - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingNavigation::test_help_opens_and_closes - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingLimit::test_limit_filters_by_subject - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingLimit::test_limit_filters_by_sender - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingLimit::test_clear_limit - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingLimit::test_limit_title_shows_count - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingLimitPrefixes::test_limit_by_status - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingStatusGroups::test_actionable_before_non_actionable - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingStatusGroups::test_archived_not_shown - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingFocusChangeId::test_focus_on_specific_series - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingQuit::test_q_exits - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingActionMenu::test_action_menu_for_new_series - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingActionMenu::test_action_menu_for_snoozed - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingActionMenu::test_enter_on_new_opens_action_menu - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingUpgradeNewSeries::test_action_menu_shows_upgrade_for_new_with_newer - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingUpgradeNewSeries::test_action_menu_no_upgrade_without_newer - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingUpgradeNewSeries::test_upgrade_switches_revision - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingSnooze::test_snooze_new_series - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingSnooze::test_snooze_cancel - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingAbandon::test_abandon_new_series - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingAbandon::test_abandon_cancel - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingDetailPanel::test_detail_panel_shows_on_highlight - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingDetailPanel::test_detail_panel_hides_on_escape - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingDetailPanel::test_detail_panel_updates_on_navigation - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTrackingSnoozeRemembersChoice::test_snooze_remembers_last_input - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestSeriesLifecycle::test_new_directly_to_snoozed - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestSeriesLifecycle::test_gone_series_actions - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestTargetBranch::test_target_branch_in_details - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestUpdateRevisionWorkflow::test_prepared_none_is_noop - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestUpdateRevisionWorkflow::test_prepared_pushes_base_selection - RuntimeError: Not inside a git repository
> FAILED src/tests/test_tui_tracking.py::TestUpdateRevisionWorkflow::test_base_selected_none_cancels - RuntimeError: Not inside a git repository

I use the released .tar, so there is indeed no .git. Doing:

--- a/src/b4/ty.py        2026-03-24 07:24:14.713405924 +0100
+++ b/src/b4/ty.py       2026-03-24 08:19:47.936368274 +0100
@@ -682,7 +681,7 @@
      """
      gitdir = b4.git_get_common_dir()
      if not gitdir:
-        raise RuntimeError('Not inside a git repository')
+        gitdir = '.'
      qdir = os.path.join(gitdir, 'b4-review', 'queue')
      if dryrun:
          qdir = os.path.join(qdir, 'dryrun')


makes this work -- whether this is correct, I don't know.

Then, there is one more failure:

> ____________________________________________________ TestTrackingAbandon.test_abandon_new_series _____________________________________________________
> 
> self = <tests.test_tui_tracking.TestTrackingAbandon object at 0x7f2f1db36850>
> tmp_path = PosixPath('/tmp/pytest-of-abuild/pytest-18/test_abandon_new_series0')
> 
>     @pytest.mark.asyncio
>     async def test_abandon_new_series(self, tmp_path: pathlib.Path) -> None:
>         """Abandoning a new series should remove it from the DB."""
>         identifier = 'test-abandon'
>         _seed_db(identifier, [
>             {
>                 'change_id': 'keep-1',
>                 'subject': '[PATCH] keep me',
>                 'sent_at': '2026-03-10T11:00:00+00:00',
>                 'message_id': 'keep@ex.com',
>             },
>             {
>                 'change_id': 'abandon-1',
>                 'subject': '[PATCH] abandon me',
>                 'sent_at': '2026-03-10T12:00:00+00:00',
>                 'message_id': 'abandon@ex.com',
>             },
>         ])
>     
>         app = TrackingApp(identifier)
>         async with app.run_test(size=(120, 30)) as pilot:
>             await pilot.pause()
>             # First series is 'abandon-1' (last inserted, added_at desc)
>             assert app._selected_series is not None
>             assert app._selected_series['change_id'] == 'abandon-1'
>     
>             await pilot.press('a')
>             await pilot.pause()
>             assert isinstance(app.screen, ActionScreen)
>     
>             # Select 'abandon' from the menu
>             await pilot.press('A')  # shortcut for abandon
>             await pilot.pause()
>     
>             # Should show confirm dialog
>             assert isinstance(app.screen, ConfirmScreen)
>     
>             await pilot.press('y')
>             await pilot.pause()
>     
>             # Verify the abandoned series is gone from DB
>             conn = tracking.get_db(identifier)
>             cursor = conn.execute('SELECT change_id FROM series')
>             remaining = [row[0] for row in cursor.fetchall()]
>             conn.close()
>             assert 'keep-1' in remaining
>>           assert 'abandon-1' not in remaining
> E           AssertionError: assert 'abandon-1' not in ['abandon-1', 'keep-1']
> 
> src/tests/test_tui_tracking.py:1076: AssertionError
> ----------------------------------------------------------------- Captured log setup -----------------------------------------------------------------
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --show-toplevel
> DEBUG    asyncio:selector_events.py:64 Using selector: EpollSelector
> ----------------------------------------------------------------- Captured log call ------------------------------------------------------------------
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --git-common-dir
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --show-toplevel
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --show-toplevel
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse b4/review/abandon-1
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse b4/review/keep-1
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --git-common-dir
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --show-toplevel
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --show-toplevel
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --show-toplevel
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse b4/review/abandon-1
> DEBUG    b4:__init__.py:3047 Running git --no-pager rev-parse --show-toplevel
> ============================================================== short test summary info ===============================================================
> FAILED src/tests/test_tui_tracking.py::TestTrackingAbandon::test_abandon_new_series - AssertionError: assert 'abandon-1' not in ['abandon-1', 'keep-1']

thanks,
-- 
js
suse labs

  parent reply	other threads:[~2026-03-24  7:26 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-20 20:47 b4 v0.15.0 released Konstantin Ryabitsev
2026-03-20 21:11 ` Luck, Tony
2026-03-21  1:55   ` Konstantin Ryabitsev
2026-03-24  7:26 ` Jiri Slaby [this message]
2026-03-24 12:49   ` Konstantin Ryabitsev
2026-03-24 14:19     ` Konstantin Ryabitsev
2026-03-25 10:06       ` Jiri Slaby
2026-03-24 12:57 ` B4 Bugbot
     [not found] ` <CA+JHD93MSC=GZMscAu8-uMroXYrHzn-w8NgHVSLyjNLJ9Wa=OA@mail.gmail.com>
2026-03-24 18:13   ` Konstantin Ryabitsev
2026-03-25 10:19     ` Borislav Petkov
2026-03-25 12:50       ` Theodore Tso
2026-03-25 13:02         ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2c35a708-0ff6-4fe0-8974-2e786dadff6e@kernel.org \
    --to=jirislaby@kernel.org \
    --cc=konstantin@linuxfoundation.org \
    --cc=tools@kernel.org \
    --cc=users@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox