From ee18bfccca8c805ed8c7a45f9b5b83e353d268a8 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Mon, 10 Jul 2023 13:05:49 +1000 Subject: [PATCH] Fix flakey test I've simplifiied the code because it was too complex for the current requirements, and this fixed the misc/initial_open test which was occasionally failing due to a race condition around busy tasks --- pkg/gui/gui.go | 40 +++++++++++++--------------------------- pkg/gui/layout.go | 4 +--- 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index d1f000c9959..1057a85bf3a 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -780,37 +780,23 @@ func (gui *Gui) loadNewRepo() error { return nil } -func (gui *Gui) showInitialPopups(popupTasks []func(chan struct{}) error) { - gui.waitForIntro.Add(len(popupTasks)) - done := make(chan struct{}) - - gui.c.OnWorker(func(task gocui.Task) { - for _, popupTask := range popupTasks { - if err := popupTask(done); err != nil { - _ = gui.c.Error(err) - } +func (gui *Gui) showIntroPopupMessage() { + gui.waitForIntro.Add(1) - task.Pause() - <-done - task.Continue() + gui.c.OnUIThread(func() error { + onConfirm := func() error { + gui.c.GetAppState().StartupPopupVersion = StartupPopupVersion + err := gui.c.SaveAppState() gui.waitForIntro.Done() + return err } - }) -} - -func (gui *Gui) showIntroPopupMessage(done chan struct{}) error { - onConfirm := func() error { - gui.c.GetAppState().StartupPopupVersion = StartupPopupVersion - err := gui.c.SaveAppState() - done <- struct{}{} - return err - } - return gui.c.Confirm(types.ConfirmOpts{ - Title: "", - Prompt: gui.c.Tr.IntroPopupMessage, - HandleConfirm: onConfirm, - HandleClose: onConfirm, + return gui.c.Confirm(types.ConfirmOpts{ + Title: "", + Prompt: gui.c.Tr.IntroPopupMessage, + HandleConfirm: onConfirm, + HandleClose: onConfirm, + }) }) } diff --git a/pkg/gui/layout.go b/pkg/gui/layout.go index 919186aa525..14f79cb5a90 100644 --- a/pkg/gui/layout.go +++ b/pkg/gui/layout.go @@ -213,12 +213,10 @@ func (gui *Gui) onInitialViewsCreation() error { gui.g.Mutexes.ViewsMutex.Unlock() if !gui.c.UserConfig.DisableStartupPopups { - popupTasks := []func(chan struct{}) error{} storedPopupVersion := gui.c.GetAppState().StartupPopupVersion if storedPopupVersion < StartupPopupVersion { - popupTasks = append(popupTasks, gui.showIntroPopupMessage) + gui.showIntroPopupMessage() } - gui.showInitialPopups(popupTasks) } if gui.showRecentRepos {