summaryrefslogtreecommitdiffstats
path: root/pkg/integration/types/types.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/integration/types/types.go')
-rw-r--r--pkg/integration/types/types.go103
1 files changed, 23 insertions, 80 deletions
diff --git a/pkg/integration/types/types.go b/pkg/integration/types/types.go
index 60fd4f353..2e6ea34f6 100644
--- a/pkg/integration/types/types.go
+++ b/pkg/integration/types/types.go
@@ -1,12 +1,17 @@
package types
import (
- "strings"
-
+ "github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/config"
- "github.com/jesseduffield/lazygit/pkg/utils"
+ "github.com/jesseduffield/lazygit/pkg/gui/types"
)
+// TODO: refactor this so that we don't have code spread around so much. We want
+// our TestImpl struct to take the dependencies it needs from the gui and then
+// create the input, assert, shell structs itself. That way, we can potentially
+// ditch these interfaces so that we don't need to keep updating them every time
+// we add a method to the concrete struct.
+
type Test interface {
Name() string
Description() string
@@ -16,7 +21,7 @@ type Test interface {
// so that they appear when lazygit runs
SetupConfig(config *config.AppConfig)
// this is called upon lazygit starting
- Run(Shell, Input, Assert, config.KeybindingConfig)
+ Run(GuiAdapter)
// e.g. '-debug'
ExtraCmdArgs() string
// for tests that are flakey and when we don't have time to fix them
@@ -81,6 +86,7 @@ type Input interface {
}
// through this interface we assert on the state of the lazygit gui
+// implementation is at pkg/gui/assert.go
type Assert interface {
WorkingTreeFileCount(int)
CommitCount(int)
@@ -93,80 +99,17 @@ type Assert interface {
Fail(errorMessage string)
}
-type TestImpl struct {
- name string
- description string
- extraCmdArgs string
- skip bool
- setupRepo func(shell Shell)
- setupConfig func(config *config.AppConfig)
- run func(
- shell Shell,
- input Input,
- assert Assert,
- keys config.KeybindingConfig,
- )
-}
-
-type NewTestArgs struct {
- Description string
- SetupRepo func(shell Shell)
- SetupConfig func(config *config.AppConfig)
- Run func(shell Shell, input Input, assert Assert, keys config.KeybindingConfig)
- ExtraCmdArgs string
- Skip bool
-}
-
-func NewTest(args NewTestArgs) *TestImpl {
- return &TestImpl{
- name: testNameFromFilePath(),
- description: args.Description,
- extraCmdArgs: args.ExtraCmdArgs,
- skip: args.Skip,
- setupRepo: args.SetupRepo,
- setupConfig: args.SetupConfig,
- run: args.Run,
- }
-}
-
-var _ Test = (*TestImpl)(nil)
-
-func (self *TestImpl) Name() string {
- return self.name
-}
-
-func (self *TestImpl) Description() string {
- return self.description
-}
-
-func (self *TestImpl) ExtraCmdArgs() string {
- return self.extraCmdArgs
-}
-
-func (self *TestImpl) Skip() bool {
- return self.skip
-}
-
-func (self *TestImpl) SetupConfig(config *config.AppConfig) {
- self.setupConfig(config)
-}
-
-func (self *TestImpl) SetupRepo(shell Shell) {
- self.setupRepo(shell)
-}
-
-func (self *TestImpl) Run(
- shell Shell,
- input Input,
- assert Assert,
- keys config.KeybindingConfig,
-) {
- self.run(shell, input, assert, keys)
-}
-
-func testNameFromFilePath() string {
- path := utils.FilePath(3)
- name := strings.Split(path, "integration/integration_tests/")[1]
-
- return name[:len(name)-len(".go")]
+type GuiAdapter interface {
+ PressKey(string)
+ Keys() config.KeybindingConfig
+ CurrentContext() types.Context
+ Model() *types.Model
+ Fail(message string)
+ // These two log methods are for the sake of debugging while testing. There's no need to actually
+ // commit any logging.
+ // logs to the normal place that you log to i.e. viewable with `lazygit --logs`
+ Log(message string)
+ // logs in the actual UI (in the commands panel)
+ LogUI(message string)
+ CheckedOutRef() *models.Branch
}