From 0141bbde0e774de29c0e73e54d23c2c211f59cce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Marku=C5=A1i=C4=87?= Date: Sat, 10 Sep 2022 17:00:40 +0200 Subject: [PATCH] Add test for amending a merge commit --- pkg/integration/components/shell.go | 2 +- .../tests/interactive_rebase/amend_merge.go | 37 ++++++++++++++++++ pkg/integration/tests/tests.go | 1 + .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../expected/repo/.git_keep/FETCH_HEAD | 0 .../amend_merge/expected/repo/.git_keep/HEAD | 1 + .../expected/repo/.git_keep/ORIG_HEAD | 1 + .../expected/repo/.git_keep/config | 10 +++++ .../expected/repo/.git_keep/description | 1 + .../amend_merge/expected/repo/.git_keep/index | Bin 0 -> 286 bytes .../expected/repo/.git_keep/info/exclude | 6 +++ .../expected/repo/.git_keep/logs/HEAD | 5 +++ .../logs/refs/heads/development-branch | 2 + .../.git_keep/logs/refs/heads/feature-branch | 2 + .../30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d | Bin 0 -> 93 bytes .../47/d2739ba2c34690248c8f91b84bb54e8936899a | Bin 0 -> 27 bytes .../48/9361eca1233745c15acc9381322e97b4d44b57 | Bin 0 -> 57 bytes .../5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f | 2 + .../6b/584e8ece562ebffc15d38808cd6b98fc3d97ea | Bin 0 -> 22 bytes .../77/e1bb1effc5857c4d701219a001823432e3586d | 1 + .../a6/9464e3729a09e3a526d4a2db209ee43e64ba1c | 2 + .../.git_keep/refs/heads/development-branch | 1 + .../repo/.git_keep/refs/heads/feature-branch | 1 + .../amend_merge/expected/repo/initial-file | 1 + .../expected/repo/new-feature-file | 1 + .../amend_merge/expected/repo/post-merge-file | 1 + 26 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 pkg/integration/tests/interactive_rebase/amend_merge.go create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/FETCH_HEAD create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/HEAD create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/description create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/index create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/47/d2739ba2c34690248c8f91b84bb54e8936899a create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/48/9361eca1233745c15acc9381322e97b4d44b57 create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/new-feature-file create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index 6595b1e87..5f7fef350 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -64,7 +64,7 @@ func (s *Shell) Checkout(name string) *Shell { } func (s *Shell) Merge(name string) *Shell { - return s.RunCommand("git merge --commit " + name) + return s.RunCommand("git merge --commit --no-ff " + name) } func (s *Shell) GitAdd(path string) *Shell { diff --git a/pkg/integration/tests/interactive_rebase/amend_merge.go b/pkg/integration/tests/interactive_rebase/amend_merge.go new file mode 100644 index 000000000..d1b295cff --- /dev/null +++ b/pkg/integration/tests/interactive_rebase/amend_merge.go @@ -0,0 +1,37 @@ +package interactive_rebase + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var AmendMerge = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Amends a staged file to a merge commit.", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell. + NewBranch("development-branch"). + CreateFileAndAdd("initial-file", "content"). + Commit("initial commit"). + NewBranch("feature-branch"). // it's also checked out automatically + CreateFileAndAdd("new-feature-file", "new content"). + Commit("new feature commit"). + CheckoutBranch("development-branch"). + Merge("feature-branch"). + CreateFileAndAdd("post-merge-file", "content") + }, + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { + assert.CommitCount(3) + + input.SwitchToCommitsWindow() + assert.CurrentViewName("commits") + + input.PressKeys(keys.Commits.AmendToCommit) + input.PressKeys(keys.Universal.Return) + + assert.MatchHeadCommitMessage(Contains("Merge")) + assert.CommitCount(3) + }, +}) diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index eb2fd83fa..d59177c7e 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -29,6 +29,7 @@ var tests = []*components.IntegrationTest{ branch.Rebase, branch.RebaseAndDrop, interactive_rebase.One, + interactive_rebase.AmendMerge, custom_commands.Basic, custom_commands.MultiplePrompts, custom_commands.MenuFromCommand, diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..857a5998b --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +new feature commit diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/FETCH_HEAD new file mode 100644 index 000000000..e69de29bb diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..dbe0904e2 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/development-branch diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD new file mode 100644 index 000000000..6b03146bc --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD @@ -0,0 +1 @@ +a69464e3729a09e3a526d4a2db209ee43e64ba1c diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config new file mode 100644 index 000000000..8a266ea88 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config @@ -0,0 +1,10 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[user] + email = CI@example.com + name = CI +[commit] + gpgSign = false diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/description b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/index b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..02e2692f47fedb6a6fb436d06aa938672bb4929f GIT binary patch literal 286 zcmZ?q402{*U|<4b=46@G&l&#zE``xRF)7C7@9P*C8kYd2UqCPedv=6h-?=co{eMI+ zcW|7|p7F_vy& zCaCoEPu$_X)vwd6a~6X@UTV2+T54iRX;CWFOt3lA9&UosQ1jNKnTOqd`~~^NCAzt( sMd>i(7(#+vU4dq>G3Xj97;rTo(myx-@JYEseYd~6mq>n!4^GJj0JzX)?*IS* literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..8f516843a --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,5 @@ +0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI 1662823399 +0200 commit (initial): initial commit +a69464e3729a09e3a526d4a2db209ee43e64ba1c a69464e3729a09e3a526d4a2db209ee43e64ba1c CI 1662823399 +0200 checkout: moving from development-branch to feature-branch +a69464e3729a09e3a526d4a2db209ee43e64ba1c 5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f CI 1662823399 +0200 commit: new feature commit +5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f a69464e3729a09e3a526d4a2db209ee43e64ba1c CI 1662823399 +0200 checkout: moving from feature-branch to development-branch +a69464e3729a09e3a526d4a2db209ee43e64ba1c 77e1bb1effc5857c4d701219a001823432e3586d CI 1662823399 +0200 merge feature-branch: Merge made by the 'ort' strategy. diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch new file mode 100644 index 000000000..e191d45d0 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI 1662823399 +0200 commit (initial): initial commit +a69464e3729a09e3a526d4a2db209ee43e64ba1c 77e1bb1effc5857c4d701219a001823432e3586d CI 1662823399 +0200 merge feature-branch: Merge made by the 'ort' strategy. diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch new file mode 100644 index 000000000..0825e687b --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI 1662823399 +0200 branch: Created from HEAD +a69464e3729a09e3a526d4a2db209ee43e64ba1c 5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f CI 1662823399 +0200 commit: new feature commit diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d new file mode 100644 index 0000000000000000000000000000000000000000..3b87e38964f0ee0bef41a17b53341dcc85ff690d GIT binary patch literal 93 zcmV-j0HXhR0V^p=O;xZkVK6i>Ff%bx$jr+u$xO`AP0P$lWyp^3>pK^wxBrjmQR{xGc=n>hZWB~``X}!2-s;zB);S9R8;m51B-k!= literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/47/d2739ba2c34690248c8f91b84bb54e8936899a b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/47/d2739ba2c34690248c8f91b84bb54e8936899a new file mode 100644 index 0000000000000000000000000000000000000000..c416a87e05b83ccdacb2040539807f0853995be9 GIT binary patch literal 27 icmb4U@$Z=Ff%bx$jr+u$xO`AP0P$lWyp^3>pK^wxBrjm \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea new file mode 100644 index 0000000000000000000000000000000000000000..ec9764eae7ae13711d9505390685b84b0bafd229 GIT binary patch literal 22 dcmb/9sÝ7¹q« ÷&Ž<%¸j£µtLºü©«ò.½ä ~úü.à \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch new file mode 100644 index 000000000..e51ee7bdf --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch @@ -0,0 +1 @@ +77e1bb1effc5857c4d701219a001823432e3586d diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch new file mode 100644 index 000000000..e80dfebb2 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch @@ -0,0 +1 @@ +5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file b/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file new file mode 100644 index 000000000..6b584e8ec --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/new-feature-file b/test/integration_new/interactive_rebase/amend_merge/expected/repo/new-feature-file new file mode 100644 index 000000000..47d2739ba --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/new-feature-file @@ -0,0 +1 @@ +new content \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file b/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file new file mode 100644 index 000000000..6b584e8ec --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file @@ -0,0 +1 @@ +content \ No newline at end of file