submodule

package
v0.41.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2024 License: MIT Imports: 3 Imported by: 0

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL