mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package gui
 | |
| 
 | |
| import (
 | |
| 	"log"
 | |
| 	"os"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/jesseduffield/gocui"
 | |
| 	"github.com/jesseduffield/lazygit/pkg/gui/popup"
 | |
| 	"github.com/jesseduffield/lazygit/pkg/gui/types"
 | |
| 	"github.com/jesseduffield/lazygit/pkg/integration/components"
 | |
| 	"github.com/jesseduffield/lazygit/pkg/utils"
 | |
| )
 | |
| 
 | |
| type IntegrationTest interface {
 | |
| 	Run(*GuiDriver)
 | |
| }
 | |
| 
 | |
| func (gui *Gui) handleTestMode() {
 | |
| 	test := gui.integrationTest
 | |
| 	if os.Getenv(components.SANDBOX_ENV_VAR) == "true" {
 | |
| 		return
 | |
| 	}
 | |
| 
 | |
| 	if test != nil {
 | |
| 		isIdleChan := make(chan struct{})
 | |
| 
 | |
| 		gui.c.GocuiGui().AddIdleListener(isIdleChan)
 | |
| 
 | |
| 		waitUntilIdle := func() {
 | |
| 			<-isIdleChan
 | |
| 		}
 | |
| 
 | |
| 		go func() {
 | |
| 			waitUntilIdle()
 | |
| 
 | |
| 			toastChan := make(chan string, 100)
 | |
| 			gui.PopupHandler.(*popup.PopupHandler).SetToastFunc(
 | |
| 				func(message string, kind types.ToastKind) { toastChan <- message })
 | |
| 
 | |
| 			test.Run(&GuiDriver{gui: gui, isIdleChan: isIdleChan, toastChan: toastChan, headless: Headless()})
 | |
| 
 | |
| 			gui.g.Update(func(*gocui.Gui) error {
 | |
| 				return gocui.ErrQuit
 | |
| 			})
 | |
| 
 | |
| 			waitUntilIdle()
 | |
| 
 | |
| 			time.Sleep(time.Second * 1)
 | |
| 
 | |
| 			log.Fatal("gocui should have already exited")
 | |
| 		}()
 | |
| 
 | |
| 		if os.Getenv(components.WAIT_FOR_DEBUGGER_ENV_VAR) == "" {
 | |
| 			go utils.Safe(func() {
 | |
| 				time.Sleep(time.Second * 40)
 | |
| 				log.Fatal("40 seconds is up, lazygit recording took too long to complete")
 | |
| 			})
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func Headless() bool {
 | |
| 	return os.Getenv("HEADLESS") != ""
 | |
| }
 |