diff --git a/pkg/integration/tests/branch/reset_to_duplicate_named_tag.go b/pkg/integration/tests/branch/reset_to_duplicate_named_tag.go new file mode 100644 index 000000000..d940d9fe1 --- /dev/null +++ b/pkg/integration/tests/branch/reset_to_duplicate_named_tag.go @@ -0,0 +1,52 @@ +package branch + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var ResetToDuplicateNamedTag = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Hard reset to a branch when a tag shares the same name", + ExtraCmdArgs: []string{}, + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.NewBranch("current-branch") + + shell.EmptyCommit("other-branch-tag commit") + shell.CreateLightweightTag("other-branch", "HEAD") + + shell.EmptyCommit("other-branch commit") + shell.NewBranch("other-branch") + + shell.Checkout("current-branch") + shell.EmptyCommit("current-branch commit") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits().Lines( + Contains("current-branch commit"), + Contains("other-branch commit"), + Contains("other-branch-tag commit"), + ) + + t.Views().Branches(). + Focus(). + Lines( + Contains("current-branch").IsSelected(), + Contains("other-branch"), + ). + SelectNextItem(). + Press(keys.Commits.ViewResetOptions) + + t.ExpectPopup().Menu(). + Title(Contains("Reset to other-branch")). + Select(Contains("Hard reset")). + Confirm() + + t.Views().Commits(). + Lines( + Contains("other-branch commit"), + Contains("other-branch-tag commit"), + ) + }, +}) diff --git a/pkg/integration/tests/tag/reset_to_duplicate_named_branch.go b/pkg/integration/tests/tag/reset_to_duplicate_named_branch.go new file mode 100644 index 000000000..096bcff04 --- /dev/null +++ b/pkg/integration/tests/tag/reset_to_duplicate_named_branch.go @@ -0,0 +1,48 @@ +package tag + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var ResetToDuplicateNamedBranch = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Hard reset to a tag when a branch shares the same name", + ExtraCmdArgs: []string{}, + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.NewBranch("current-branch") + + shell.EmptyCommit("other-branch-tag commit") + shell.CreateLightweightTag("other-branch", "HEAD") + + shell.EmptyCommit("other-branch commit") + shell.NewBranch("other-branch") + + shell.Checkout("current-branch") + shell.EmptyCommit("current-branch commit") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits().Lines( + Contains("current-branch commit"), + Contains("other-branch commit"), + Contains("other-branch-tag commit"), + ) + + t.Views().Tags(). + Focus(). + Lines( + Contains("other-branch").IsSelected(), + ). + Press(keys.Commits.ViewResetOptions) + + t.ExpectPopup().Menu(). + Title(Contains("Reset to other-branch")). + Select(Contains("Hard reset")). + Confirm() + + t.Views().Commits().Lines( + Contains("other-branch-tag commit"), + ) + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index 9470858a1..e46ff0ca3 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -71,6 +71,7 @@ var tests = []*components.IntegrationTest{ branch.RebaseToUpstream, branch.Rename, branch.Reset, + branch.ResetToDuplicateNamedTag, branch.ResetToUpstream, branch.SelectCommitsOfCurrentBranch, branch.SetUpstream, @@ -406,6 +407,7 @@ var tests = []*components.IntegrationTest{ tag.ForceTagAnnotated, tag.ForceTagLightweight, tag.Reset, + tag.ResetToDuplicateNamedBranch, ui.Accordion, ui.DisableSwitchTabWithPanelJumpKeys, ui.EmptyMenu,