mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-30 03:23:08 +03:00
migrate discard staged changes test
This commit is contained in:
@ -24,3 +24,26 @@ func (self *FileSystem) PathNotPresent(path string) {
|
|||||||
return os.IsNotExist(err), fmt.Sprintf("Expected path '%s' to not exist, but it does", path)
|
return os.IsNotExist(err), fmt.Sprintf("Expected path '%s' to not exist, but it does", path)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Asserts that the file at the given path has the given content
|
||||||
|
func (self *FileSystem) FileContainsContent(path string, matcher *matcher) {
|
||||||
|
self.assertWithRetries(func() (bool, string) {
|
||||||
|
_, err := os.Stat(path)
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
return false, fmt.Sprintf("Expected path '%s' to not exist, but it does", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
output, err := os.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
return false, fmt.Sprintf("Expected error when reading file content at path '%s': %s", path, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
strOutput := string(output)
|
||||||
|
|
||||||
|
if ok, errMsg := matcher.context("").test(strOutput); !ok {
|
||||||
|
return false, fmt.Sprintf("Unexpected content in file %s: %s", path, errMsg)
|
||||||
|
}
|
||||||
|
|
||||||
|
return true, ""
|
||||||
|
})
|
||||||
|
}
|
||||||
|
52
pkg/integration/tests/file/discard_staged_changes.go
Normal file
52
pkg/integration/tests/file/discard_staged_changes.go
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
package file
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/config"
|
||||||
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||||
|
)
|
||||||
|
|
||||||
|
var DiscardStagedChanges = NewIntegrationTest(NewIntegrationTestArgs{
|
||||||
|
Description: "Discarding staged changes",
|
||||||
|
ExtraCmdArgs: "",
|
||||||
|
Skip: false,
|
||||||
|
SetupConfig: func(config *config.AppConfig) {
|
||||||
|
},
|
||||||
|
SetupRepo: func(shell *Shell) {
|
||||||
|
shell.CreateFileAndAdd("fileToRemove", "original content")
|
||||||
|
shell.CreateFileAndAdd("file2", "original content")
|
||||||
|
shell.Commit("first commit")
|
||||||
|
|
||||||
|
shell.CreateFile("file3", "original content")
|
||||||
|
shell.UpdateFile("fileToRemove", "new content")
|
||||||
|
shell.UpdateFile("file2", "new content")
|
||||||
|
},
|
||||||
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
||||||
|
t.Views().Files().
|
||||||
|
IsFocused().
|
||||||
|
Lines(
|
||||||
|
Contains(` M file2`).IsSelected(),
|
||||||
|
Contains(` M fileToRemove`),
|
||||||
|
Contains(`?? file3`),
|
||||||
|
).
|
||||||
|
SelectNextItem().
|
||||||
|
PressPrimaryAction().
|
||||||
|
Lines(
|
||||||
|
Contains(` M file2`),
|
||||||
|
Contains(`M fileToRemove`).IsSelected(),
|
||||||
|
Contains(`?? file3`),
|
||||||
|
).
|
||||||
|
Press(keys.Files.ViewResetOptions)
|
||||||
|
|
||||||
|
t.ExpectPopup().Menu().Title(Equals("")).Select(Contains("discard staged changes")).Confirm()
|
||||||
|
|
||||||
|
// staged file has been removed
|
||||||
|
t.Views().Files().
|
||||||
|
Lines(
|
||||||
|
Contains(` M file2`),
|
||||||
|
Contains(`?? file3`).IsSelected(),
|
||||||
|
)
|
||||||
|
|
||||||
|
// the file should have the same content that it originally had, given that that was committed already
|
||||||
|
t.FileSystem().FileContainsContent("fileToRemove", Equals("original content"))
|
||||||
|
},
|
||||||
|
})
|
@ -53,6 +53,7 @@ var tests = []*components.IntegrationTest{
|
|||||||
custom_commands.MultiplePrompts,
|
custom_commands.MultiplePrompts,
|
||||||
file.DirWithUntrackedFile,
|
file.DirWithUntrackedFile,
|
||||||
file.DiscardChanges,
|
file.DiscardChanges,
|
||||||
|
file.DiscardStagedChanges,
|
||||||
interactive_rebase.AmendMerge,
|
interactive_rebase.AmendMerge,
|
||||||
interactive_rebase.One,
|
interactive_rebase.One,
|
||||||
stash.Rename,
|
stash.Rename,
|
||||||
|
@ -1 +0,0 @@
|
|||||||
file2
|
|
@ -1 +0,0 @@
|
|||||||
ref: refs/heads/master
|
|
@ -1 +0,0 @@
|
|||||||
02f629e46dbaa03b58196cced3df07b02c0daf22
|
|
@ -1,8 +0,0 @@
|
|||||||
[core]
|
|
||||||
repositoryformatversion = 0
|
|
||||||
filemode = true
|
|
||||||
bare = false
|
|
||||||
logallrefupdates = true
|
|
||||||
[user]
|
|
||||||
email = CI@example.com
|
|
||||||
name = CI
|
|
@ -1 +0,0 @@
|
|||||||
Unnamed repository; edit this file 'description' to name the repository.
|
|
Binary file not shown.
@ -1,6 +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]
|
|
||||||
# *~
|
|
@ -1,5 +0,0 @@
|
|||||||
0000000000000000000000000000000000000000 22f24c5fcc97c1ff826ecb66b60bdc01937f6052 CI <CI@example.com> 1652009263 +0200 commit (initial): file0
|
|
||||||
22f24c5fcc97c1ff826ecb66b60bdc01937f6052 9e7ff93a5c67a0ef098e9e436961746f333edf98 CI <CI@example.com> 1652009263 +0200 commit: file1
|
|
||||||
9e7ff93a5c67a0ef098e9e436961746f333edf98 02f629e46dbaa03b58196cced3df07b02c0daf22 CI <CI@example.com> 1652009263 +0200 commit: file2
|
|
||||||
02f629e46dbaa03b58196cced3df07b02c0daf22 02f629e46dbaa03b58196cced3df07b02c0daf22 CI <CI@example.com> 1652009266 +0200 reset: moving to HEAD
|
|
||||||
02f629e46dbaa03b58196cced3df07b02c0daf22 02f629e46dbaa03b58196cced3df07b02c0daf22 CI <CI@example.com> 1652009266 +0200 reset: moving to HEAD
|
|
@ -1,3 +0,0 @@
|
|||||||
0000000000000000000000000000000000000000 22f24c5fcc97c1ff826ecb66b60bdc01937f6052 CI <CI@example.com> 1652009263 +0200 commit (initial): file0
|
|
||||||
22f24c5fcc97c1ff826ecb66b60bdc01937f6052 9e7ff93a5c67a0ef098e9e436961746f333edf98 CI <CI@example.com> 1652009263 +0200 commit: file1
|
|
||||||
9e7ff93a5c67a0ef098e9e436961746f333edf98 02f629e46dbaa03b58196cced3df07b02c0daf22 CI <CI@example.com> 1652009263 +0200 commit: file2
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +0,0 @@
|
|||||||
x<01><><EFBFBD>
|
|
||||||
<EFBFBD>0=<3D>+<2B>.<2E>&ݦ.<2E>=<3D>3<EFBFBD><33>
|
|
||||||
)%<25><>o><3E><>0<0C>ZK<5A>Y<>K;<01>২<>)<29>q<EFBFBD>!Y<><59>1KfSv
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,3 +0,0 @@
|
|||||||
x+)JMU<4D><55>d040031QH<51><48>I5`<60><10><><EFBFBD><EFBFBD><EFBFBD>ֶw<D6B6><77><EFBFBD>w.<2E><>h<EFBFBD>T<EFBFBD>[H
|
|
||||||
<19><1F>e<EFBFBD><65>"Ǩ<>S<EFBFBD>,<2C><>gu"<22><>YH
|
|
||||||
<EFBFBD>$x~5(<28>;<3B>rբ<72><D5A2><EFBFBD><EFBFBD>W<EFBFBD><57>-<2D>Ж+^
|
|
@ -1,2 +0,0 @@
|
|||||||
x<01><><EFBFBD>
|
|
||||||
<EFBFBD>0D=<3D>+<2B>.<2E>v<EFBFBD>n<<3C>3<EFBFBD><33><0B>-5<><35>o.
|
|
@ -1,2 +0,0 @@
|
|||||||
x<01><>A
|
|
||||||
<EFBFBD>0E]<5D><14>2<>$"BW=F2<46><32><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><44><EFBFBD><08>><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>.<2E><>"<22>A"<22><><0C>p)<29><i<>Tr<54><72>=Pȁ<50>3{9<><39>-<2D>bਣI<E0A8A3>T<EFBFBD>H<48><12><><EFBFBD><EFBFBD>OJєOn<7F><6E>f{<7B><><EFBFBD>|˺<><CBBA><EFBFBD><EFBFBD>z<EFBFBD><7A>"d$o<>0<EFBFBD>t<><74><EFBFBD><EFBFBD>nty<74>3?<3F><>9<EFBFBD>
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +0,0 @@
|
|||||||
x+)JMU03c040031QH<51><48>I5`<60><10><><EFBFBD><EFBFBD><EFBFBD>ֶw<D6B6><77><EFBFBD>w.<2E><>h<EFBFBD>T<EFBFBD>[H
|
|
||||||
<19><>y<EFBFBD>W5<57>Ɨ<EFBFBD><C697>(<28>|<7C>^-<2D>W(x9
|
|
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
02f629e46dbaa03b58196cced3df07b02c0daf22
|
|
@ -1 +0,0 @@
|
|||||||
test0
|
|
@ -1 +0,0 @@
|
|||||||
test1
|
|
@ -1 +0,0 @@
|
|||||||
hello there
|
|
@ -1 +0,0 @@
|
|||||||
hello there
|
|
@ -1 +0,0 @@
|
|||||||
{"KeyEvents":[{"Timestamp":1175,"Mod":0,"Key":256,"Ch":32},{"Timestamp":1991,"Mod":0,"Key":256,"Ch":68},{"Timestamp":2923,"Mod":0,"Key":256,"Ch":83},{"Timestamp":4453,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":213,"Height":56}]}
|
|
@ -1,26 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cd $1
|
|
||||||
|
|
||||||
git init
|
|
||||||
|
|
||||||
git config user.email "CI@example.com"
|
|
||||||
git config user.name "CI"
|
|
||||||
|
|
||||||
echo test0 > file0
|
|
||||||
git add .
|
|
||||||
git commit -am file0
|
|
||||||
|
|
||||||
echo test1 > file1
|
|
||||||
git add .
|
|
||||||
git commit -am file1
|
|
||||||
|
|
||||||
echo test2 > file2
|
|
||||||
git add .
|
|
||||||
git commit -am file2
|
|
||||||
|
|
||||||
echo "hello there" > file1
|
|
||||||
echo "hello there" > file2
|
|
||||||
echo "hello there" > file3
|
|
@ -1 +0,0 @@
|
|||||||
{ "description": "Discarding staged changes", "speed": 5 }
|
|
Reference in New Issue
Block a user