Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Add = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Add a submodule", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("first commit") shell.Clone("other_repo") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Submodules().Focus(). Press(keys.Universal.New). Tap(func() { t.ExpectPopup().Prompt(). Title(Equals("New submodule URL:")). Type("../other_repo").Confirm() t.ExpectPopup().Prompt(). Title(Equals("New submodule name:")). InitialText(Equals("other_repo")). Clear().Type("my_submodule").Confirm() t.ExpectPopup().Prompt(). Title(Equals("New submodule path:")). InitialText(Equals("my_submodule")). Clear().Type("my_submodule_path").Confirm() }). Lines( Contains("my_submodule").IsSelected(), ) t.Views().Main().TopLines( Contains("Name: my_submodule"), Contains("Path: my_submodule_path"), Contains("Url: ../other_repo"), ) t.Views().Files().Focus(). Lines( Contains(".gitmodules").IsSelected(), Contains("my_submodule_path (submodule)"), ). Tap(func() { t.Views().Main().Content( Contains("[submodule \"my_submodule\"]"). Contains("path = my_submodule_path"). Contains("url = ../other_repo"), ) }). SelectNextItem(). Tap(func() { t.Views().Main().Content( Contains("Submodule my_submodule_path"). Contains("(new submodule)"), ) }) }, })
View Source
var Enter = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Enter a submodule, add a commit, and then stage the change in the parent repo", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(cfg *config.AppConfig) { cfg.UserConfig.CustomCommands = []config.CustomCommand{ { Key: "e", Context: "files", Command: "git commit --allow-empty -m \"empty commit\"", }, } }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("first commit") shell.CloneIntoSubmodule("my_submodule_name", "my_submodule_path") shell.GitAddAll() shell.Commit("add submodule") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { assertInParentRepo := func() { t.Views().Status().Content(Contains("repo")) } assertInSubmodule := func() { if t.Git().Version().IsAtLeast(2, 22, 0) { t.Views().Status().Content(Contains("my_submodule_path(my_submodule_name)")) } else { t.Views().Status().Content(Contains("my_submodule_path")) } } assertInParentRepo() t.Views().Submodules().Focus(). Lines( Contains("my_submodule_name").IsSelected(), ). PressEnter() assertInSubmodule() t.Views().Files().IsFocused(). Press("e"). Tap(func() { t.Views().Commits().Content(Contains("empty commit")) }). PressEscape() assertInParentRepo() t.Views().Submodules().IsFocused() t.Views().Main().Content(Contains("> empty commit")) t.Views().Files().Focus(). Lines( MatchesRegexp(` M.*my_submodule_path \(submodule\)`).IsSelected(), ). Tap(func() { t.Views().Main().Content(Contains("> empty commit")) }). PressPrimaryAction(). Press(keys.Files.CommitChanges). Tap(func() { t.ExpectPopup().CommitMessagePanel().Type("submodule change").Confirm() }). IsEmpty() t.Views().Submodules().Focus() t.Views().Main().Content(DoesNotContain("> empty commit")) }, })
View Source
var EnterNested = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Enter a nested submodule", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(cfg *config.AppConfig) {}, SetupRepo: func(shell *Shell) { setupNestedSubmodules(shell) }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Submodules().Focus(). Lines( Equals("outerSubName").IsSelected(), Equals(" - innerSubName"), ). Tap(func() { t.Views().Main().ContainsLines( Contains("Name: outerSubName"), Contains("Path: modules/outerSubPath"), Contains("Url: ../outerSubmodule"), ) }). SelectNextItem(). Tap(func() { t.Views().Main().ContainsLines( Contains("Name: outerSubName/innerSubName"), Contains("Path: modules/outerSubPath/modules/innerSubPath"), Contains("Url: ../innerSubmodule"), ) }). PressEnter() if t.Git().Version().IsAtLeast(2, 22, 0) { t.Views().Status().Content(Contains("innerSubPath(innerSubName)")) } else { t.Views().Status().Content(Contains("innerSubPath")) } t.Views().Commits().ContainsLines( Contains("initial inner commit"), ) t.Views().Files().PressEscape() t.Views().Status().Content(Contains("repo")) }, })
View Source
var Remove = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Remove a submodule", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("first commit") shell.CloneIntoSubmodule("my_submodule_name", "my_submodule_path") shell.GitAddAll() shell.Commit("add submodule") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { gitDirSubmodulePath := ".git/modules/my_submodule_name" t.FileSystem().PathPresent(gitDirSubmodulePath) t.Views().Submodules().Focus(). Lines( Contains("my_submodule_name").IsSelected(), ). Press(keys.Universal.Remove). Tap(func() { t.ExpectPopup().Confirmation(). Title(Equals("Remove submodule")). Content(Equals("Are you sure you want to remove submodule 'my_submodule_name' and its corresponding directory? This is irreversible.")). Confirm() }). IsEmpty() t.Views().Files().Focus(). Lines( MatchesRegexp(`M.*\.gitmodules`).IsSelected(), MatchesRegexp(`D.*my_submodule_path`), ) t.Views().Main().Content( Contains("-[submodule \"my_submodule_name\"]"). Contains("- path = my_submodule_path"). Contains("- url = ../other_repo"), ) t.FileSystem().PathNotPresent(gitDirSubmodulePath) }, })
View Source
var RemoveNested = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Remove a nested submodule", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { setupNestedSubmodules(shell) }, Run: func(t *TestDriver, keys config.KeybindingConfig) { gitDirSubmodulePath, _ := filepath.Abs(".git/modules/outerSubName/modules/innerSubName") t.FileSystem().PathPresent(gitDirSubmodulePath) t.Views().Submodules().Focus(). Lines( Equals("outerSubName").IsSelected(), Equals(" - innerSubName"), ). SelectNextItem(). Press(keys.Universal.Remove). Tap(func() { t.ExpectPopup().Confirmation(). Title(Equals("Remove submodule")). Content(Equals("Are you sure you want to remove submodule 'outerSubName/innerSubName' and its corresponding directory? This is irreversible.")). Confirm() }). Lines( Equals("outerSubName").IsSelected(), ). Press(keys.Universal.GoInto) t.Views().Files().IsFocused(). Lines( Contains("modules").IsSelected(), MatchesRegexp(`D.*innerSubPath`), MatchesRegexp(`M.*\.gitmodules`), ). NavigateToLine(Contains(".gitmodules")) t.Views().Main().Content( Contains("-[submodule \"innerSubName\"]"). Contains("- path = modules/innerSubPath"). Contains("- url = ../innerSubmodule"), ) t.FileSystem().PathNotPresent(gitDirSubmodulePath) }, })
View Source
var Reset = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Enter a submodule, create a commit and stage some changes, then reset the submodule from back in the parent repo. This test captures functionality around getting a dirty submodule out of your files panel.", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(cfg *config.AppConfig) { cfg.UserConfig.CustomCommands = []config.CustomCommand{ { Key: "e", Context: "files", Command: "git commit --allow-empty -m \"empty commit\" && echo \"my_file content\" > my_file", }, } }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("first commit") shell.CloneIntoSubmodule("my_submodule_name", "my_submodule_path") shell.GitAddAll() shell.Commit("add submodule") shell.CreateFile("other_file", "") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { assertInParentRepo := func() { t.Views().Status().Content(Contains("repo")) } assertInSubmodule := func() { if t.Git().Version().IsAtLeast(2, 22, 0) { t.Views().Status().Content(Contains("my_submodule_path(my_submodule_name)")) } else { t.Views().Status().Content(Contains("my_submodule_path")) } } assertInParentRepo() t.Views().Submodules().Focus(). Lines( Contains("my_submodule_name").IsSelected(), ). PressEnter() assertInSubmodule() t.Views().Files().IsFocused(). Press("e"). Tap(func() { t.Views().Commits().Content(Contains("empty commit")) t.Views().Files().Content(Contains("my_file")) }). Lines( Contains("my_file").IsSelected(), ). PressPrimaryAction(). PressEscape() assertInParentRepo() t.Views().Submodules().IsFocused() t.Views().Main().Content(Contains("Submodule my_submodule_path contains modified content")) t.Views().Files().Focus(). Lines( MatchesRegexp(` M.*my_submodule_path \(submodule\)`), Contains("other_file").IsSelected(), ). Press(keys.Universal.ToggleRangeSelect). SelectPreviousItem(). Lines( MatchesRegexp(` M.*my_submodule_path \(submodule\)`).IsSelected(), Contains("other_file").IsSelected(), ). Press(keys.Universal.Remove). Tap(func() { t.ExpectToast(Contains("Disabled: Range select not supported for submodules")) }). Press(keys.Universal.ToggleRangeSelect). Lines( MatchesRegexp(` M.*my_submodule_path \(submodule\)`).IsSelected(), Contains("other_file"), ). Press(keys.Universal.Remove). Tap(func() { t.ExpectPopup().Menu(). Title(Equals("my_submodule_path")). Select(Contains("Stash uncommitted submodule changes and update")). Confirm() }). Lines( Contains("other_file").IsSelected(), ) t.Views().Submodules().Focus(). PressEnter() assertInSubmodule() t.Views().Branches().Lines( Contains("HEAD detached").IsSelected(), Contains("master"), ) t.Views().Commits().Lines( Contains("first commit").IsSelected(), ) t.Views().Files().IsEmpty() t.Views().Stash().Focus(). Lines( Contains("WIP on master").IsSelected(), ) t.Views().Main().Content(Contains("my_file content")) }, })
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.