From 14d9e776be401ffc6d27cf4ef9f21a41cd203f41 Mon Sep 17 00:00:00 2001 From: DerTeta Date: Sat, 21 Aug 2021 21:14:35 +0200 Subject: Use `DiffContextSize` in `ShowFileDiffStr` --- pkg/commands/files.go | 3 ++- pkg/commands/files_test.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) (limited to 'pkg/commands') diff --git a/pkg/commands/files.go b/pkg/commands/files.go index bf692595a..8eb154c30 100644 --- a/pkg/commands/files.go +++ b/pkg/commands/files.go @@ -248,6 +248,7 @@ func (c *GitCommand) ShowFileDiff(from string, to string, reverse bool, fileName func (c *GitCommand) ShowFileDiffCmdStr(from string, to string, reverse bool, fileName string, plain bool) string { colorArg := c.colorArg() + contextSize := c.Config.GetUserConfig().Git.DiffContextSize if plain { colorArg = "never" } @@ -257,7 +258,7 @@ func (c *GitCommand) ShowFileDiffCmdStr(from string, to string, reverse bool, fi reverseFlag = " -R " } - return fmt.Sprintf("git diff --submodule --no-ext-diff --no-renames --color=%s %s %s %s -- %s", colorArg, from, to, reverseFlag, c.OSCommand.Quote(fileName)) + return fmt.Sprintf("git diff --submodule --no-ext-diff --unified=%d --no-renames --color=%s %s %s %s -- %s", contextSize, colorArg, from, to, reverseFlag, c.OSCommand.Quote(fileName)) } // CheckoutFile checks out the file for the given commit diff --git a/pkg/commands/files_test.go b/pkg/commands/files_test.go index acbdde8cc..a16c52a7d 100644 --- a/pkg/commands/files_test.go +++ b/pkg/commands/files_test.go @@ -441,6 +441,59 @@ func TestGitCommandDiff(t *testing.T) { } } +// TestGitCommandShowFileDiff is a function. +func TestGitCommandShowFileDiff(t *testing.T) { + type scenario struct { + testName string + command func(string, ...string) *exec.Cmd + from string + to string + reverse bool + plain bool + contextSize int + } + + scenarios := []scenario{ + { + "Default case", + func(cmd string, args ...string) *exec.Cmd { + assert.EqualValues(t, "git", cmd) + assert.EqualValues(t, []string{"diff", "--submodule", "--no-ext-diff", "--unified=3", "--no-renames", "--color=always", "1234567890", "0987654321", "--", "test.txt"}, args) + + return secureexec.Command("echo") + }, + "1234567890", + "0987654321", + false, + false, + 3, + }, + { + "Show diff with custom context size", + func(cmd string, args ...string) *exec.Cmd { + assert.EqualValues(t, "git", cmd) + assert.EqualValues(t, []string{"diff", "--submodule", "--no-ext-diff", "--unified=123", "--no-renames", "--color=always", "1234567890", "0987654321", "--", "test.txt"}, args) + + return secureexec.Command("echo") + }, + "1234567890", + "0987654321", + false, + false, + 123, + }, + } + + for _, s := range scenarios { + t.Run(s.testName, func(t *testing.T) { + gitCmd := NewDummyGitCommand() + gitCmd.OSCommand.Command = s.command + gitCmd.Config.GetUserConfig().Git.DiffContextSize = s.contextSize + gitCmd.ShowFileDiff(s.from, s.to, s.reverse, "test.txt", s.plain) + }) + } +} + // TestGitCommandCheckoutFile is a function. func TestGitCommandCheckoutFile(t *testing.T) { type scenario struct { -- cgit v1.2.3