mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-02-09 13:47:11 +02:00
migrate submodule reset test
This commit is contained in:
parent
d7956c481d
commit
3cfdae4116
@ -26,6 +26,15 @@ var Enter = NewIntegrationTest(NewIntegrationTestArgs{
|
|||||||
shell.Commit("add submodule")
|
shell.Commit("add submodule")
|
||||||
},
|
},
|
||||||
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||||
|
assertInParentRepo := func() {
|
||||||
|
t.Views().Status().Content(Contains("repo"))
|
||||||
|
}
|
||||||
|
assertInSubmodule := func() {
|
||||||
|
t.Views().Status().Content(Contains("my_submodule"))
|
||||||
|
}
|
||||||
|
|
||||||
|
assertInParentRepo()
|
||||||
|
|
||||||
t.Views().Submodules().Focus().
|
t.Views().Submodules().Focus().
|
||||||
Lines(
|
Lines(
|
||||||
Contains("my_submodule").IsSelected(),
|
Contains("my_submodule").IsSelected(),
|
||||||
@ -33,6 +42,8 @@ var Enter = NewIntegrationTest(NewIntegrationTestArgs{
|
|||||||
// enter the submodule
|
// enter the submodule
|
||||||
PressEnter()
|
PressEnter()
|
||||||
|
|
||||||
|
assertInSubmodule()
|
||||||
|
|
||||||
t.Views().Files().IsFocused().
|
t.Views().Files().IsFocused().
|
||||||
Press("e").
|
Press("e").
|
||||||
Tap(func() {
|
Tap(func() {
|
||||||
@ -41,6 +52,8 @@ var Enter = NewIntegrationTest(NewIntegrationTestArgs{
|
|||||||
// return to the parent repo
|
// return to the parent repo
|
||||||
PressEscape()
|
PressEscape()
|
||||||
|
|
||||||
|
assertInParentRepo()
|
||||||
|
|
||||||
t.Views().Submodules().IsFocused()
|
t.Views().Submodules().IsFocused()
|
||||||
|
|
||||||
// we see the new commit in the submodule is ready to be staged in the parent repo
|
// we see the new commit in the submodule is ready to be staged in the parent repo
|
||||||
|
105
pkg/integration/tests/submodule/reset.go
Normal file
105
pkg/integration/tests/submodule/reset.go
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
package submodule
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/config"
|
||||||
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||||
|
)
|
||||||
|
|
||||||
|
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: "",
|
||||||
|
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.RunCommand("git clone --bare . ../other_repo")
|
||||||
|
shell.RunCommand("git submodule add ../other_repo my_submodule")
|
||||||
|
shell.GitAddAll()
|
||||||
|
shell.Commit("add submodule")
|
||||||
|
},
|
||||||
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||||
|
assertInParentRepo := func() {
|
||||||
|
t.Views().Status().Content(Contains("repo"))
|
||||||
|
}
|
||||||
|
assertInSubmodule := func() {
|
||||||
|
t.Views().Status().Content(Contains("my_submodule"))
|
||||||
|
}
|
||||||
|
|
||||||
|
assertInParentRepo()
|
||||||
|
|
||||||
|
t.Views().Submodules().Focus().
|
||||||
|
Lines(
|
||||||
|
Contains("my_submodule").IsSelected(),
|
||||||
|
).
|
||||||
|
// enter the submodule
|
||||||
|
PressEnter()
|
||||||
|
|
||||||
|
assertInSubmodule()
|
||||||
|
|
||||||
|
t.Views().Status().Content(Contains("my_submodule"))
|
||||||
|
|
||||||
|
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(),
|
||||||
|
).
|
||||||
|
// stage my_file
|
||||||
|
PressPrimaryAction().
|
||||||
|
// return to the parent repo
|
||||||
|
PressEscape()
|
||||||
|
|
||||||
|
assertInParentRepo()
|
||||||
|
|
||||||
|
t.Views().Submodules().IsFocused()
|
||||||
|
|
||||||
|
t.Views().Main().Content(Contains("Submodule my_submodule contains modified content"))
|
||||||
|
|
||||||
|
t.Views().Files().Focus().
|
||||||
|
Lines(
|
||||||
|
MatchesRegexp(` M.*my_submodule \(submodule\)`).IsSelected(),
|
||||||
|
).
|
||||||
|
Press(keys.Universal.Remove).
|
||||||
|
Tap(func() {
|
||||||
|
t.ExpectPopup().Menu().Title(Equals("my_submodule")).Select(Contains("stash uncommitted submodule changes and update")).Confirm()
|
||||||
|
}).
|
||||||
|
IsEmpty()
|
||||||
|
|
||||||
|
t.Views().Submodules().Focus().
|
||||||
|
PressEnter()
|
||||||
|
|
||||||
|
assertInSubmodule()
|
||||||
|
|
||||||
|
// submodule has been hard reset to the commit the parent repo specifies
|
||||||
|
t.Views().Branches().Lines(
|
||||||
|
Contains("HEAD detached").IsSelected(),
|
||||||
|
Contains("master"),
|
||||||
|
)
|
||||||
|
|
||||||
|
// empty commit is gone
|
||||||
|
t.Views().Commits().Lines(
|
||||||
|
Contains("first commit").IsSelected(),
|
||||||
|
)
|
||||||
|
|
||||||
|
// the staged change has been stashed
|
||||||
|
t.Views().Files().IsEmpty()
|
||||||
|
|
||||||
|
t.Views().Stash().Focus().
|
||||||
|
Lines(
|
||||||
|
Contains("WIP on master").IsSelected(),
|
||||||
|
)
|
||||||
|
|
||||||
|
t.Views().Main().Content(Contains("my_file content"))
|
||||||
|
},
|
||||||
|
})
|
@ -79,6 +79,7 @@ var tests = []*components.IntegrationTest{
|
|||||||
submodule.Add,
|
submodule.Add,
|
||||||
submodule.Remove,
|
submodule.Remove,
|
||||||
submodule.Enter,
|
submodule.Enter,
|
||||||
|
submodule.Reset,
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetTests() []*components.IntegrationTest {
|
func GetTests() []*components.IntegrationTest {
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
disableStartupPopups: true
|
|
||||||
customCommands:
|
|
||||||
- key: 'N'
|
|
||||||
description: 'Add file'
|
|
||||||
context: 'files'
|
|
||||||
command: 'echo "haha" > output.txt'
|
|
@ -1 +0,0 @@
|
|||||||
ref: refs/heads/master
|
|
@ -1,8 +0,0 @@
|
|||||||
[core]
|
|
||||||
repositoryformatversion = 0
|
|
||||||
filemode = true
|
|
||||||
bare = true
|
|
||||||
ignorecase = true
|
|
||||||
precomposeunicode = true
|
|
||||||
[remote "origin"]
|
|
||||||
url = /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/submoduleReset/actual/./repo
|
|
@ -1 +0,0 @@
|
|||||||
Unnamed repository; edit this file 'description' to name the repository.
|
|
@ -1,7 +0,0 @@
|
|||||||
# 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]
|
|
||||||
# *~
|
|
||||||
.DS_Store
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
|||||||
x�ÍM
|
|
||||||
ƒ0@á®sŠÙJ&Nþ Á•Ç“ I¡Þ¾¡ÛÇ/µZ×HîÖÐâRÑì%d"Áàr@ÃX<-4dG…“5Š?ýݘfxNó(_®û&�ÔêÐä£ñ6Â]£Öêª×¤ËŸ\Õ³¬› ú5,ß
|
|
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
|||||||
# pack-refs with: peeled fully-peeled sorted
|
|
||||||
42530e986dbb65877ed8d61ca0c816e425e5c62e refs/heads/master
|
|
@ -1 +0,0 @@
|
|||||||
add submodule
|
|
@ -1 +0,0 @@
|
|||||||
ref: refs/heads/master
|
|
@ -1,13 +0,0 @@
|
|||||||
[core]
|
|
||||||
repositoryformatversion = 0
|
|
||||||
filemode = true
|
|
||||||
bare = false
|
|
||||||
logallrefupdates = true
|
|
||||||
ignorecase = true
|
|
||||||
precomposeunicode = true
|
|
||||||
[user]
|
|
||||||
email = CI@example.com
|
|
||||||
name = CI
|
|
||||||
[submodule "other_repo"]
|
|
||||||
url = /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/submoduleReset/actual/other_repo
|
|
||||||
active = true
|
|
@ -1 +0,0 @@
|
|||||||
Unnamed repository; edit this file 'description' to name the repository.
|
|
Binary file not shown.
@ -1,7 +0,0 @@
|
|||||||
# 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]
|
|
||||||
# *~
|
|
||||||
.DS_Store
|
|
@ -1,3 +0,0 @@
|
|||||||
0000000000000000000000000000000000000000 a50a5125768001a3ea263ffb7cafbc421a508153 CI <CI@example.com> 1534792759 +0100 commit (initial): myfile1
|
|
||||||
a50a5125768001a3ea263ffb7cafbc421a508153 42530e986dbb65877ed8d61ca0c816e425e5c62e CI <CI@example.com> 1534792759 +0100 commit: myfile2
|
|
||||||
42530e986dbb65877ed8d61ca0c816e425e5c62e 9d10a5a0a21eb2cfdb6206f474ed57fd5cd51440 CI <CI@example.com> 1534792759 +0100 commit: add submodule
|
|
@ -1,3 +0,0 @@
|
|||||||
0000000000000000000000000000000000000000 a50a5125768001a3ea263ffb7cafbc421a508153 CI <CI@example.com> 1534792759 +0100 commit (initial): myfile1
|
|
||||||
a50a5125768001a3ea263ffb7cafbc421a508153 42530e986dbb65877ed8d61ca0c816e425e5c62e CI <CI@example.com> 1534792759 +0100 commit: myfile2
|
|
||||||
42530e986dbb65877ed8d61ca0c816e425e5c62e 9d10a5a0a21eb2cfdb6206f474ed57fd5cd51440 CI <CI@example.com> 1534792759 +0100 commit: add submodule
|
|
@ -1 +0,0 @@
|
|||||||
42530e986dbb65877ed8d61ca0c816e425e5c62e
|
|
@ -1 +0,0 @@
|
|||||||
a50a5125768001a3ea263ffb7cafbc421a508153
|
|
@ -1,14 +0,0 @@
|
|||||||
[core]
|
|
||||||
repositoryformatversion = 0
|
|
||||||
filemode = true
|
|
||||||
bare = false
|
|
||||||
logallrefupdates = true
|
|
||||||
ignorecase = true
|
|
||||||
precomposeunicode = true
|
|
||||||
worktree = ../../../other_repo
|
|
||||||
[remote "origin"]
|
|
||||||
url = /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/submoduleReset/actual/other_repo
|
|
||||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
|
||||||
[branch "master"]
|
|
||||||
remote = origin
|
|
||||||
merge = refs/heads/master
|
|
@ -1 +0,0 @@
|
|||||||
Unnamed repository; edit this file 'description' to name the repository.
|
|
Binary file not shown.
@ -1,7 +0,0 @@
|
|||||||
# 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]
|
|
||||||
# *~
|
|
||||||
.DS_Store
|
|
@ -1,5 +0,0 @@
|
|||||||
0000000000000000000000000000000000000000 42530e986dbb65877ed8d61ca0c816e425e5c62e Jesse Duffield <jessedduffield@gmail.com> 1534792759 +0100 clone: from /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/submoduleReset/actual/other_repo
|
|
||||||
42530e986dbb65877ed8d61ca0c816e425e5c62e a50a5125768001a3ea263ffb7cafbc421a508153 Jesse Duffield <jessedduffield@gmail.com> 1648348154 +1100 rebase -i (start): checkout a50a5125768001a3ea263ffb7cafbc421a508153
|
|
||||||
a50a5125768001a3ea263ffb7cafbc421a508153 a50a5125768001a3ea263ffb7cafbc421a508153 Jesse Duffield <jessedduffield@gmail.com> 1648348154 +1100 rebase -i (finish): returning to refs/heads/master
|
|
||||||
a50a5125768001a3ea263ffb7cafbc421a508153 a50a5125768001a3ea263ffb7cafbc421a508153 Jesse Duffield <jessedduffield@gmail.com> 1648348162 +1100 reset: moving to HEAD
|
|
||||||
a50a5125768001a3ea263ffb7cafbc421a508153 42530e986dbb65877ed8d61ca0c816e425e5c62e Jesse Duffield <jessedduffield@gmail.com> 1648348162 +1100 checkout: moving from master to 42530e986dbb65877ed8d61ca0c816e425e5c62e
|
|
@ -1,2 +0,0 @@
|
|||||||
0000000000000000000000000000000000000000 42530e986dbb65877ed8d61ca0c816e425e5c62e Jesse Duffield <jessedduffield@gmail.com> 1534792759 +0100 clone: from /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/submoduleReset/actual/other_repo
|
|
||||||
42530e986dbb65877ed8d61ca0c816e425e5c62e a50a5125768001a3ea263ffb7cafbc421a508153 Jesse Duffield <jessedduffield@gmail.com> 1648348154 +1100 rebase -i (finish): refs/heads/master onto a50a5125768001a3ea263ffb7cafbc421a508153
|
|
@ -1 +0,0 @@
|
|||||||
0000000000000000000000000000000000000000 42530e986dbb65877ed8d61ca0c816e425e5c62e Jesse Duffield <jessedduffield@gmail.com> 1534792759 +0100 clone: from /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/submoduleReset/actual/other_repo
|
|
@ -1 +0,0 @@
|
|||||||
0000000000000000000000000000000000000000 874e570cb4ea7387ba59054b315aa584038cacea Jesse Duffield <jessedduffield@gmail.com> 1648348162 +1100 WIP on master: a50a512 myfile1
|
|
Binary file not shown.
@ -1,2 +0,0 @@
|
|||||||
x¥�A E]sŠÙ›À�PcŒWÞb€AÑR’BÞÞ6ñ.ßûÉû¡–’;hmv}fôN›,êà-û�¤•lÐ'í �Kž‰‚–þ¬3ܹ5†Û’Ræ1ÂùµqŒ?¾>
|
|
||||||
åñj¹€²èŽè”Õ°WJJ±Úõºó_±L}¦ðæ)�Ü NP¨Õ�‘d”†òÙ&%¾†ƒJ·
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
|||||||
x¥�1OÅ0„™û+²#¡8‰!ÄÀ³c;¼¢öµ}ÿž ñ~ãÝ}:['ë²L‡‹˜oŽÍÌAQk¢Þ �¬cƘs¦„†QjÊ2‚D¯Ãov>£g„€%“÷ÀÑ8äØZ-ÂJ
|
|
||||||
ÐŒW^CèA#%_«–TE©³F…}”Ö/`½òÝ…RŠGbi$ˆý+…H{P„Æ�/ÇiÝÜ«í»¹çKk“Íê>µêŸ~úXxšïd]äD1äàn¼ºÛ§8ì_%ÃûË›[Ïná½7Ý_÷qËw›fƒ™WnÆ
|
|
@ -1,2 +0,0 @@
|
|||||||
x�ÍM
|
|
||||||
ƒ0@á®sŠÙJ&Nþ Á•Ç“ I¡Þ¾¡ÛÇ/µZ×HîÖÐâRÑì%d"Áàr@ÃX<-4dG…“5Š?ýݘfxNó(_®û&�ÔêÐä£ñ6Â]£Öêª×¤ËŸ\Õ³¬› ú5,ß
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
|||||||
# pack-refs with: peeled fully-peeled sorted
|
|
||||||
42530e986dbb65877ed8d61ca0c816e425e5c62e refs/remotes/origin/master
|
|
@ -1 +0,0 @@
|
|||||||
a50a5125768001a3ea263ffb7cafbc421a508153
|
|
@ -1 +0,0 @@
|
|||||||
ref: refs/remotes/origin/master
|
|
@ -1 +0,0 @@
|
|||||||
874e570cb4ea7387ba59054b315aa584038cacea
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
|||||||
x�ÍM
|
|
||||||
ƒ0@á®sŠÙJ&Nþ Á•Ç“ I¡Þ¾¡ÛÇ/µZ×HîÖÐâRÑì%d"Áàr@ÃX<-4dG…“5Š?ýݘfxNó(_®û&�ÔêÐä£ñ6Â]£Öêª×¤ËŸ\Õ³¬› ú5,ß
|
|
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
9d10a5a0a21eb2cfdb6206f474ed57fd5cd51440
|
|
@ -1,3 +0,0 @@
|
|||||||
[submodule "other_repo"]
|
|
||||||
path = other_repo
|
|
||||||
url = ../other_repo
|
|
@ -1 +0,0 @@
|
|||||||
test1
|
|
@ -1 +0,0 @@
|
|||||||
test2
|
|
@ -1 +0,0 @@
|
|||||||
gitdir: ../.git/modules/other_repo
|
|
@ -1 +0,0 @@
|
|||||||
test1
|
|
@ -1 +0,0 @@
|
|||||||
test2
|
|
@ -1 +0,0 @@
|
|||||||
{"KeyEvents":[{"Timestamp":653,"Mod":0,"Key":256,"Ch":93},{"Timestamp":1685,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2749,"Mod":0,"Key":259,"Ch":0},{"Timestamp":2893,"Mod":0,"Key":259,"Ch":0},{"Timestamp":3229,"Mod":0,"Key":256,"Ch":100},{"Timestamp":3661,"Mod":0,"Key":13,"Ch":13},{"Timestamp":4069,"Mod":0,"Key":260,"Ch":0},{"Timestamp":4189,"Mod":0,"Key":260,"Ch":0},{"Timestamp":5180,"Mod":0,"Key":256,"Ch":78},{"Timestamp":6508,"Mod":0,"Key":256,"Ch":32},{"Timestamp":7311,"Mod":0,"Key":27,"Ch":0},{"Timestamp":8212,"Mod":0,"Key":256,"Ch":91},{"Timestamp":10268,"Mod":0,"Key":256,"Ch":100},{"Timestamp":12165,"Mod":0,"Key":13,"Ch":13},{"Timestamp":13741,"Mod":0,"Key":256,"Ch":93},{"Timestamp":14317,"Mod":0,"Key":13,"Ch":13},{"Timestamp":16645,"Mod":0,"Key":259,"Ch":0},{"Timestamp":16805,"Mod":0,"Key":259,"Ch":0},{"Timestamp":17005,"Mod":0,"Key":259,"Ch":0},{"Timestamp":18588,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]}
|
|
@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cd $1
|
|
||||||
|
|
||||||
export GIT_COMMITTER_DATE="Mon 20 Aug 2018 20:19:19 BST"
|
|
||||||
export GIT_AUTHOR_DATE="Mon 20 Aug 2018 20:19:19 BST"
|
|
||||||
|
|
||||||
git init
|
|
||||||
|
|
||||||
git config user.email "CI@example.com"
|
|
||||||
git config user.name "CI"
|
|
||||||
|
|
||||||
echo test1 > myfile1
|
|
||||||
git add .
|
|
||||||
git commit -am "myfile1"
|
|
||||||
echo test2 > myfile2
|
|
||||||
git add .
|
|
||||||
git commit -am "myfile2"
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
git clone --bare ./repo other_repo
|
|
||||||
cd repo
|
|
||||||
|
|
||||||
git -c protocol.file.allow=always submodule add ../other_repo
|
|
||||||
git commit -am "add submodule"
|
|
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"description": "After making some changes in a submodule, we reset the submodule from the parent repo",
|
|
||||||
"speed": 10
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user