forked from jesseduffield/lazygit
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add test to auto-amend a commit after pressing
e
on it
Auto-amending is a little-known feature of git that is very convenient once you know it: whenever you stop at a commit marked with `edit` in an interactive rebase, you can make changes and stage them, and when you continue the rebase they automatically get amended to the commit you had stopped at. This is so convenient because making changes to a commit is one of the main reasons why you edit a commit. Unfortunately this currently doesn't work in lazygit because we don't actually use `edit` to stop at the first commit (instead, we add a `break` todo after it, which doesn't have the auto-amend functionality). We'll improve this later in this branch.
- Loading branch information
1 parent
4624d49
commit 0766b14
Showing
2 changed files
with
59 additions
and
0 deletions.
There are no files selected for viewing
58 changes: 58 additions & 0 deletions
58
pkg/integration/tests/interactive_rebase/edit_and_auto_amend.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package interactive_rebase | ||
|
||
import ( | ||
"github.com/jesseduffield/lazygit/pkg/config" | ||
. "github.com/jesseduffield/lazygit/pkg/integration/components" | ||
) | ||
|
||
var EditAndAutoAmend = NewIntegrationTest(NewIntegrationTestArgs{ | ||
Description: "Edit a commit, make a change and stage it, then continue the rebase to auto-amend the commit", | ||
ExtraCmdArgs: []string{}, | ||
Skip: false, | ||
SetupConfig: func(config *config.AppConfig) {}, | ||
SetupRepo: func(shell *Shell) { | ||
shell. | ||
CreateNCommits(3) | ||
}, | ||
Run: func(t *TestDriver, keys config.KeybindingConfig) { | ||
t.Views().Commits(). | ||
Focus(). | ||
Lines( | ||
Contains("commit 03"), | ||
Contains("commit 02"), | ||
Contains("commit 01"), | ||
). | ||
NavigateToLine(Contains("commit 02")). | ||
Press(keys.Universal.Edit). | ||
Lines( | ||
Contains("commit 03"), | ||
MatchesRegexp("YOU ARE HERE.*commit 02").IsSelected(), | ||
Contains("commit 01"), | ||
) | ||
|
||
t.Shell().CreateFile("fixup-file", "fixup content") | ||
t.Views().Files(). | ||
Focus(). | ||
Press(keys.Files.RefreshFiles). | ||
Lines( | ||
Contains("??").Contains("fixup-file").IsSelected(), | ||
). | ||
PressPrimaryAction() | ||
|
||
t.Common().ContinueRebase() | ||
|
||
t.Views().Commits(). | ||
Focus(). | ||
Lines( | ||
Contains("commit 03"), | ||
Contains("commit 02").IsSelected(), | ||
Contains("commit 01"), | ||
) | ||
|
||
t.Views().Main(). | ||
/* EXPECTED: | ||
Content(Contains("fixup content")) | ||
ACTUAL: */ | ||
Content(DoesNotContain("fixup content")) | ||
}, | ||
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters