diff options
Diffstat (limited to 'pkg/commands/deps_test.go')
-rw-r--r-- | pkg/commands/deps_test.go | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/pkg/commands/deps_test.go b/pkg/commands/deps_test.go new file mode 100644 index 000000000..59eeb8a0e --- /dev/null +++ b/pkg/commands/deps_test.go @@ -0,0 +1,137 @@ +package commands + +import ( + "github.com/go-errors/errors" + "github.com/jesseduffield/lazygit/pkg/commands/git_config" + "github.com/jesseduffield/lazygit/pkg/commands/loaders" + "github.com/jesseduffield/lazygit/pkg/commands/oscommands" + "github.com/jesseduffield/lazygit/pkg/common" + "github.com/jesseduffield/lazygit/pkg/config" + "github.com/jesseduffield/lazygit/pkg/utils" +) + +type commonDeps struct { + runner *oscommands.FakeCmdObjRunner + userConfig *config.UserConfig + gitConfig *git_config.FakeGitConfig + getenv func(string) string + removeFile func(string) error + dotGitDir string + common *common.Common + cmd *oscommands.CmdObjBuilder +} + +func completeDeps(deps commonDeps) commonDeps { + if deps.runner == nil { + deps.runner = oscommands.NewFakeRunner(nil) + } + + if deps.userConfig == nil { + deps.userConfig = config.GetDefaultConfig() + } + + if deps.gitConfig == nil { + deps.gitConfig = git_config.NewFakeGitConfig(nil) + } + + if deps.getenv == nil { + deps.getenv = func(string) string { return "" } + } + + if deps.removeFile == nil { + deps.removeFile = func(string) error { return errors.New("unexpected call to removeFile") } + } + + if deps.dotGitDir == "" { + deps.dotGitDir = ".git" + } + + if deps.common == nil { + deps.common = utils.NewDummyCommonWithUserConfig(deps.userConfig) + } + + if deps.cmd == nil { + deps.cmd = oscommands.NewDummyCmdObjBuilder(deps.runner) + } + + return deps +} + +func buildConfigCommands(deps commonDeps) *ConfigCommands { + deps = completeDeps(deps) + common := utils.NewDummyCommonWithUserConfig(deps.userConfig) + + return NewConfigCommands(common, deps.gitConfig) +} + +func buildOSCommand(deps commonDeps) *oscommands.OSCommand { + deps = completeDeps(deps) + + return oscommands.NewDummyOSCommandWithDeps(oscommands.OSCommandDeps{ + Common: deps.common, + GetenvFn: deps.getenv, + Cmd: deps.cmd, + RemoveFileFn: deps.removeFile, + }) +} + +func buildFileLoader(deps commonDeps) *loaders.FileLoader { + deps = completeDeps(deps) + + configCommands := buildConfigCommands(deps) + + return loaders.NewFileLoader(deps.common, deps.cmd, configCommands) +} + +func buildSubmoduleCommands(deps commonDeps) *SubmoduleCommands { + deps = completeDeps(deps) + + return NewSubmoduleCommands(deps.common, deps.cmd, deps.dotGitDir) +} + +func buildCommitCommands(deps commonDeps) *CommitCommands { + deps = completeDeps(deps) + return NewCommitCommands(deps.common, deps.cmd) +} + +func buildWorkingTreeCommands(deps commonDeps) *WorkingTreeCommands { + deps = completeDeps(deps) + osCommand := buildOSCommand(deps) + submoduleCommands := buildSubmoduleCommands(deps) + fileLoader := buildFileLoader(deps) + + return NewWorkingTreeCommands(deps.common, deps.cmd, submoduleCommands, osCommand, fileLoader) +} + +func buildStashCommands(deps commonDeps) *StashCommands { + deps = completeDeps(deps) + osCommand := buildOSCommand(deps) + fileLoader := buildFileLoader(deps) + workingTreeCommands := buildWorkingTreeCommands(deps) + + return NewStashCommands(deps.common, deps.cmd, osCommand, fileLoader, workingTreeCommands) +} + +func buildRebaseCommands(deps commonDeps) *RebaseCommands { + deps = completeDeps(deps) + configCommands := buildConfigCommands(deps) + osCommand := buildOSCommand(deps) + workingTreeCommands := buildWorkingTreeCommands(deps) + commitCommands := buildCommitCommands(deps) + + return NewRebaseCommands(deps.common, deps.cmd, osCommand, commitCommands, workingTreeCommands, configCommands, deps.dotGitDir) +} + +func buildSyncCommands(deps commonDeps) *SyncCommands { + deps = completeDeps(deps) + + return NewSyncCommands(deps.common, deps.cmd) +} + +func buildFileCommands(deps commonDeps) *FileCommands { + deps = completeDeps(deps) + configCommands := buildConfigCommands(deps) + osCommand := buildOSCommand(deps) + + return NewFileCommands(deps.common, deps.cmd, configCommands, osCommand) +} |