1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-21 12:16:54 +02:00

fall back to slower speed if test fails

This commit is contained in:
Jesse Duffield 2020-10-05 20:55:15 +11:00
parent 08f8472db3
commit dc953ea680
2 changed files with 51 additions and 28 deletions

View File

@ -106,6 +106,10 @@ func Test(t *testing.T) {
for _, test := range tests { for _, test := range tests {
test := test test := test
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
speeds := []int{10, 5, 1}
for i, speed := range speeds {
fmt.Printf("%s: trying again at speed %d\n", test.name, speed)
testPath := filepath.Join(rootDir, "test", "integration", test.name) testPath := filepath.Join(rootDir, "test", "integration", test.name)
findOrCreateDir(testPath) findOrCreateDir(testPath)
@ -120,7 +124,7 @@ func Test(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
record := os.Getenv("RECORD_EVENTS") != "" record := os.Getenv("RECORD_EVENTS") != ""
runLazygit(t, testPath, rootDir, record) runLazygit(t, testPath, rootDir, record, speed)
updateSnapshot := record || os.Getenv("UPDATE_SNAPSHOT") != "" updateSnapshot := record || os.Getenv("UPDATE_SNAPSHOT") != ""
@ -135,7 +139,15 @@ func Test(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
expected := string(expectedBytes) expected := string(expectedBytes)
if expected == actual {
break
}
// if the snapshots and we haven't tried all playback speeds different we'll retry at a slower speed
if i == len(speeds)-1 {
assert.Equal(t, expected, actual, fmt.Sprintf("expected:\n%s\nactual:\n%s\n", expected, actual)) assert.Equal(t, expected, actual, fmt.Sprintf("expected:\n%s\nactual:\n%s\n", expected, actual))
}
}
}) })
} }
} }
@ -169,7 +181,7 @@ func gotoRootDirectory() {
} }
} }
func runLazygit(t *testing.T, testPath string, rootDir string, record bool) { func runLazygit(t *testing.T, testPath string, rootDir string, record bool, speed int) {
osCommand := oscommands.NewDummyOSCommand() osCommand := oscommands.NewDummyOSCommand()
replayPath := filepath.Join(testPath, "recording.json") replayPath := filepath.Join(testPath, "recording.json")
@ -193,6 +205,8 @@ func runLazygit(t *testing.T, testPath string, rootDir string, record bool) {
cmdStr = fmt.Sprintf("%s --use-config-dir=%s", cmdStr, configDir) cmdStr = fmt.Sprintf("%s --use-config-dir=%s", cmdStr, configDir)
cmd := osCommand.ExecutableFromString(cmdStr) cmd := osCommand.ExecutableFromString(cmdStr)
cmd.Env = append(cmd.Env, fmt.Sprintf("REPLAY_SPEED=%d", speed))
if record { if record {
cmd.Env = append( cmd.Env = append(
cmd.Env, cmd.Env,

View File

@ -5,6 +5,7 @@ import (
"io/ioutil" "io/ioutil"
"log" "log"
"os" "os"
"strconv"
"time" "time"
"github.com/jesseduffield/gocui" "github.com/jesseduffield/gocui"
@ -38,14 +39,22 @@ func (gui *Gui) replayRecordedEvents() {
// might need to add leeway if this ends up flakey // might need to add leeway if this ends up flakey
var leeway int64 = 0 var leeway int64 = 0
// humans are slow so this speeds things up. // humans are slow so this speeds things up.
var speed int64 = 5 speed := 1
envReplaySpeed := os.Getenv("REPLAY_SPEED")
if envReplaySpeed != "" {
var err error
speed, err = strconv.Atoi(envReplaySpeed)
if err != nil {
log.Fatal(err)
}
}
for _, event := range events { for _, event := range events {
middle: middle:
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
now := gui.timeSinceStart()*speed - leeway now := gui.timeSinceStart()*int64(speed) - leeway
if gui.g != nil && now >= event.Timestamp { if gui.g != nil && now >= event.Timestamp {
gui.g.ReplayedEvents <- *event.Event gui.g.ReplayedEvents <- *event.Event
break middle break middle