mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-06-15 00:15:32 +02:00
Use an interface for tasks instead of a concrete struct
By using an interface for tasks we can use a fake implementation in tests with extra methods
This commit is contained in:
94
vendor/github.com/jesseduffield/gocui/task.go
generated
vendored
Normal file
94
vendor/github.com/jesseduffield/gocui/task.go
generated
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
package gocui
|
||||
|
||||
// A task represents the fact that the program is busy doing something, which
|
||||
// is useful for integration tests which only want to proceed when the program
|
||||
// is idle.
|
||||
|
||||
type Task interface {
|
||||
Done()
|
||||
Pause()
|
||||
Continue()
|
||||
// not exporting because we don't need to
|
||||
isBusy() bool
|
||||
}
|
||||
|
||||
type TaskImpl struct {
|
||||
id int
|
||||
busy bool
|
||||
onDone func()
|
||||
withMutex func(func())
|
||||
}
|
||||
|
||||
func (self *TaskImpl) Done() {
|
||||
self.onDone()
|
||||
}
|
||||
|
||||
func (self *TaskImpl) Pause() {
|
||||
self.withMutex(func() {
|
||||
self.busy = false
|
||||
})
|
||||
}
|
||||
|
||||
func (self *TaskImpl) Continue() {
|
||||
self.withMutex(func() {
|
||||
self.busy = true
|
||||
})
|
||||
}
|
||||
|
||||
func (self *TaskImpl) isBusy() bool {
|
||||
return self.busy
|
||||
}
|
||||
|
||||
type TaskStatus int
|
||||
|
||||
const (
|
||||
TaskStatusBusy TaskStatus = iota
|
||||
TaskStatusPaused
|
||||
TaskStatusDone
|
||||
)
|
||||
|
||||
type FakeTask struct {
|
||||
status TaskStatus
|
||||
}
|
||||
|
||||
func NewFakeTask() *FakeTask {
|
||||
return &FakeTask{
|
||||
status: TaskStatusBusy,
|
||||
}
|
||||
}
|
||||
|
||||
func (self *FakeTask) Done() {
|
||||
self.status = TaskStatusDone
|
||||
}
|
||||
|
||||
func (self *FakeTask) Pause() {
|
||||
self.status = TaskStatusPaused
|
||||
}
|
||||
|
||||
func (self *FakeTask) Continue() {
|
||||
self.status = TaskStatusBusy
|
||||
}
|
||||
|
||||
func (self *FakeTask) isBusy() bool {
|
||||
return self.status == TaskStatusBusy
|
||||
}
|
||||
|
||||
func (self *FakeTask) Status() TaskStatus {
|
||||
return self.status
|
||||
}
|
||||
|
||||
func (self *FakeTask) FormatStatus() string {
|
||||
return formatTaskStatus(self.status)
|
||||
}
|
||||
|
||||
func formatTaskStatus(status TaskStatus) string {
|
||||
switch status {
|
||||
case TaskStatusBusy:
|
||||
return "busy"
|
||||
case TaskStatusPaused:
|
||||
return "paused"
|
||||
case TaskStatusDone:
|
||||
return "done"
|
||||
}
|
||||
return "unknown"
|
||||
}
|
Reference in New Issue
Block a user