summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2021-04-05 10:20:02 +1000
committerJesse Duffield <jessedduffield@gmail.com>2021-04-06 19:34:32 +1000
commit843b8ceab0fa3888357f0e86026bebb6f4f1c305 (patch)
tree6c8b3b5be5948c62be6c3ee8144ac7c92e85cde1 /test
parent011451464fea4992b2dd8a09008b3e0ce45ba775 (diff)
support tcell simulation screen
Diffstat (limited to 'test')
-rw-r--r--test/integration/commit/expected/.git_keep/indexbin425 -> 425 bytes
-rw-r--r--test/integration/commit/expected/.git_keep/logs/HEAD10
-rw-r--r--test/integration/commit/expected/.git_keep/logs/refs/heads/master10
-rw-r--r--test/integration/commit/expected/.git_keep/objects/47/912ceb0ffa9b205290e75103d9dd6b1878e87b2
-rw-r--r--test/integration/commit/expected/.git_keep/objects/55/bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa2
-rw-r--r--test/integration/commit/expected/.git_keep/objects/6b/d1486e023f9853f9e6f611cac5ccbc8960ce57bin0 -> 149 bytes
-rw-r--r--test/integration/commit/expected/.git_keep/objects/6f/31cc35ebabdf3fb71759e3d267677e712f737fbin149 -> 0 bytes
-rw-r--r--test/integration/commit/expected/.git_keep/objects/98/0224a1dd75d91fdcab11edc8d25c3ff8f751babin0 -> 149 bytes
-rw-r--r--test/integration/commit/expected/.git_keep/objects/ba/001a041f64109b238f03550d6a21209bd5d4fcbin150 -> 0 bytes
-rw-r--r--test/integration/commit/expected/.git_keep/objects/d0/cab53ed70fc66096575c2ccd7ef150b4b470e8bin0 -> 146 bytes
-rw-r--r--test/integration/commit/expected/.git_keep/objects/e6/8c1143545a09cac1db6e6f20db13b82b5dc43ebin149 -> 0 bytes
-rw-r--r--test/integration/commit/expected/.git_keep/objects/ec/c083de4d216847c184c72a639743bba6520d884
-rw-r--r--test/integration/commit/expected/.git_keep/objects/f4/e779d1bd2ad074259ad763210f5b911337054f2
-rw-r--r--test/integration/commit/expected/.git_keep/refs/heads/master2
-rw-r--r--test/integration/commit/recording.json2
-rw-r--r--test/integration/commit/test.json2
-rw-r--r--test/lazyintegration/main.go324
17 files changed, 177 insertions, 183 deletions
diff --git a/test/integration/commit/expected/.git_keep/index b/test/integration/commit/expected/.git_keep/index
index e0b0f6831..b712be28a 100644
--- a/test/integration/commit/expected/.git_keep/index
+++ b/test/integration/commit/expected/.git_keep/index
Binary files differ
diff --git a/test/integration/commit/expected/.git_keep/logs/HEAD b/test/integration/commit/expected/.git_keep/logs/HEAD
index 01374ee2b..0583e2f0b 100644
--- a/test/integration/commit/expected/.git_keep/logs/HEAD
+++ b/test/integration/commit/expected/.git_keep/logs/HEAD
@@ -1,5 +1,5 @@
-0000000000000000000000000000000000000000 55bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa CI <CI@example.com> 1617579407 +1000 commit (initial): myfile1
-55bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa e68c1143545a09cac1db6e6f20db13b82b5dc43e CI <CI@example.com> 1617579407 +1000 commit: myfile2
-e68c1143545a09cac1db6e6f20db13b82b5dc43e ba001a041f64109b238f03550d6a21209bd5d4fc CI <CI@example.com> 1617579407 +1000 commit: myfile3
-ba001a041f64109b238f03550d6a21209bd5d4fc 6f31cc35ebabdf3fb71759e3d267677e712f737f CI <CI@example.com> 1617579407 +1000 commit: myfile4
-6f31cc35ebabdf3fb71759e3d267677e712f737f ecc083de4d216847c184c72a639743bba6520d88 CI <CI@example.com> 1617579409 +1000 commit: commit
+0000000000000000000000000000000000000000 47912ceb0ffa9b205290e75103d9dd6b1878e87b CI <CI@example.com> 1617580570 +1000 commit (initial): myfile1
+47912ceb0ffa9b205290e75103d9dd6b1878e87b 6bd1486e023f9853f9e6f611cac5ccbc8960ce57 CI <CI@example.com> 1617580570 +1000 commit: myfile2
+6bd1486e023f9853f9e6f611cac5ccbc8960ce57 980224a1dd75d91fdcab11edc8d25c3ff8f751ba CI <CI@example.com> 1617580570 +1000 commit: myfile3
+980224a1dd75d91fdcab11edc8d25c3ff8f751ba f4e779d1bd2ad074259ad763210f5b911337054f CI <CI@example.com> 1617580570 +1000 commit: myfile4
+f4e779d1bd2ad074259ad763210f5b911337054f d0cab53ed70fc66096575c2ccd7ef150b4b470e8 CI <CI@example.com> 1617580572 +1000 commit: commit
diff --git a/test/integration/commit/expected/.git_keep/logs/refs/heads/master b/test/integration/commit/expected/.git_keep/logs/refs/heads/master
index 01374ee2b..0583e2f0b 100644
--- a/test/integration/commit/expected/.git_keep/logs/refs/heads/master
+++ b/test/integration/commit/expected/.git_keep/logs/refs/heads/master
@@ -1,5 +1,5 @@
-0000000000000000000000000000000000000000 55bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa CI <CI@example.com> 1617579407 +1000 commit (initial): myfile1
-55bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa e68c1143545a09cac1db6e6f20db13b82b5dc43e CI <CI@example.com> 1617579407 +1000 commit: myfile2
-e68c1143545a09cac1db6e6f20db13b82b5dc43e ba001a041f64109b238f03550d6a21209bd5d4fc CI <CI@example.com> 1617579407 +1000 commit: myfile3
-ba001a041f64109b238f03550d6a21209bd5d4fc 6f31cc35ebabdf3fb71759e3d267677e712f737f CI <CI@example.com> 1617579407 +1000 commit: myfile4
-6f31cc35ebabdf3fb71759e3d267677e712f737f ecc083de4d216847c184c72a639743bba6520d88 CI <CI@example.com> 1617579409 +1000 commit: commit
+0000000000000000000000000000000000000000 47912ceb0ffa9b205290e75103d9dd6b1878e87b CI <CI@example.com> 1617580570 +1000 commit (initial): myfile1
+47912ceb0ffa9b205290e75103d9dd6b1878e87b 6bd1486e023f9853f9e6f611cac5ccbc8960ce57 CI <CI@example.com> 1617580570 +1000 commit: myfile2
+6bd1486e023f9853f9e6f611cac5ccbc8960ce57 980224a1dd75d91fdcab11edc8d25c3ff8f751ba CI <CI@example.com> 1617580570 +1000 commit: myfile3
+980224a1dd75d91fdcab11edc8d25c3ff8f751ba f4e779d1bd2ad074259ad763210f5b911337054f CI <CI@example.com> 1617580570 +1000 commit: myfile4
+f4e779d1bd2ad074259ad763210f5b911337054f d0cab53ed70fc66096575c2ccd7ef150b4b470e8 CI <CI@example.com> 1617580572 +1000 commit: commit
diff --git a/test/integration/commit/expected/.git_keep/objects/47/912ceb0ffa9b205290e75103d9dd6b1878e87b b/test/integration/commit/expected/.git_keep/objects/47/912ceb0ffa9b205290e75103d9dd6b1878e87b
new file mode 100644
index 000000000..a92c77d4a
--- /dev/null
+++ b/test/integration/commit/expected/.git_keep/objects/47/912ceb0ffa9b205290e75103d9dd6b1878e87b
@@ -0,0 +1,2 @@
+xA
+0@Q9I#M&XR"~̖r*Jd7Y)J4$gᚲ\zWa>NO$Vf #p&DtG=&]ξuY16, \ No newline at end of file
diff --git a/test/integration/commit/expected/.git_keep/objects/55/bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa b/test/integration/commit/expected/.git_keep/objects/55/bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa
deleted file mode 100644
index e169a11e3..000000000
--- a/test/integration/commit/expected/.git_keep/objects/55/bf9e2babc63fb5bae4b42c79fb1ddd1f4205fa
+++ /dev/null
@@ -1,2 +0,0 @@
-xA
-0@Ѯsʌ'J\yL")#tyS5[˥*`2RT</|%s^ui4=|FWBDwsOWM3, \ No newline at end of file
diff --git a/test/integration/commit/expected/.git_keep/objects/6b/d1486e023f9853f9e6f611cac5ccbc8960ce57 b/test/integration/commit/expected/.git_keep/objects/6b/d1486e023f9853f9e6f611cac5ccbc8960ce57
new file mode 100644
index 000000000..93473ae59
--- /dev/null
+++ b/test/integration/commit/expected/.git_keep/objects/6b/d1486e023f9853f9e6f611cac5ccbc8960ce57
Binary files differ
diff --git a/test/integration/commit/expected/.git_keep/objects/6f/31cc35ebabdf3fb71759e3d267677e712f737f b/test/integration/commit/expected/.git_keep/objects/6f/31cc35ebabdf3fb71759e3d267677e712f737f
deleted file mode 100644
index c11a558e0..000000000
--- a/test/integration/commit/expected/.git_keep/objects/6f/31cc35ebabdf3fb71759e3d267677e712f737f
+++ /dev/null
Binary files differ
diff --git a/test/integration/commit/expected/.git_keep/objects/98/0224a1dd75d91fdcab11edc8d25c3ff8f751ba b/test/integration/commit/expected/.git_keep/objects/98/0224a1dd75d91fdcab11edc8d25c3ff8f751ba
new file mode 100644
index 000000000..ff762551a
--- /dev/null
+++ b/test/integration/commit/expected/.git_keep/objects/98/0224a1dd75d91fdcab11edc8d25c3ff8f751ba
Binary files differ
diff --git a/test/integration/commit/expected/.git_keep/objects/ba/001a041f64109b238f03550d6a21209bd5d4fc b/test/integration/commit/expected/.git_keep/objects/ba/001a041f64109b238f03550d6a21209bd5d4fc
deleted file mode 100644
index e71124dfe..000000000
--- a/test/integration/commit/expected/.git_keep/objects/ba/001a041f64109b238f03550d6a21209bd5d4fc
+++ /dev/null
Binary files differ
diff --git a/test/integration/commit/expected/.git_keep/objects/d0/cab53ed70fc66096575c2ccd7ef150b4b470e8 b/test/integration/commit/expected/.git_keep/objects/d0/cab53ed70fc66096575c2ccd7ef150b4b470e8
new file mode 100644
index 000000000..1cc91b7dc
--- /dev/null
+++ b/test/integration/commit/expected/.git_keep/objects/d0/cab53ed70fc66096575c2ccd7ef150b4b470e8
Binary files differ
diff --git a/test/integration/commit/expected/.git_keep/objects/e6/8c1143545a09cac1db6e6f20db13b82b5dc43e b/test/integration/commit/expected/.git_keep/objects/e6/8c1143545a09cac1db6e6f20db13b82b5dc43e
deleted file mode 100644
index e674fb807..000000000
--- a/test/integration/commit/expected/.git_keep/objects/e6/8c1143545a09cac1db6e6f20db13b82b5dc43e
+++ /dev/null
Binary files differ
diff --git a/test/integration/commit/expected/.git_keep/objects/ec/c083de4d216847c184c72a639743bba6520d88 b/test/integration/commit/expected/.git_keep/objects/ec/c083de4d216847c184c72a639743bba6520d88
deleted file mode 100644
index 39146c9f3..000000000
--- a/test/integration/commit/expected/.git_keep/objects/ec/c083de4d216847c184c72a639743bba6520d88
+++ /dev/null
@@ -1,4 +0,0 @@
-xA
-1 a=E4M "j)
-
-.<kkwU +kLO:Q5+OlC9ӤIR4 U&F0/p~mO=]p6f#e);a \ No newline at end of file
diff --git a/test/integration/commit/expected/.git_keep/objects/f4/e779d1bd2ad074259ad763210f5b911337054f b/test/integration/commit/expected/.git_keep/objects/f4/e779d1bd2ad074259ad763210f5b911337054f
new file mode 100644
index 000000000..874975520
--- /dev/null
+++ b/test/integration/commit/expected/.git_keep/objects/f4/e779d1bd2ad074259ad763210f5b911337054f
@@ -0,0 +1,2 @@
+xK
+0@] 2d"BW=4`D#}<x/o-]cr~hS=6{lKYL ·Nq* k<#JɱʶX̊z0NpW5I@@ڷ.8#9} \ No newline at end of file
diff --git a/test/integration/commit/expected/.git_keep/refs/heads/master b/test/integration/commit/expected/.git_keep/refs/heads/master
index 3730bab88..b03b94788 100644
--- a/test/integration/commit/expected/.git_keep/refs/heads/master
+++ b/test/integration/commit/expected/.git_keep/refs/heads/master
@@ -1 +1 @@
-ecc083de4d216847c184c72a639743bba6520d88
+d0cab53ed70fc66096575c2ccd7ef150b4b470e8
diff --git a/test/integration/commit/recording.json b/test/integration/commit/recording.json
index 78df06751..eb45c9fde 100644
--- a/test/integration/commit/recording.json
+++ b/test/integration/commit/recording.json
@@ -1 +1 @@
-{"KeyEvents":[{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":99},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":99},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":111},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":109},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":109},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":105},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":116},{"Timestamp":9223372036854,"Mod":0,"Key":13,"Ch":13},{"Timestamp":9223372036854,"Mod":0,"Key":256,"Ch":113}]} \ No newline at end of file
+{"KeyEvents":[{"Timestamp":527,"Mod":0,"Key":256,"Ch":32},{"Timestamp":830,"Mod":0,"Key":256,"Ch":99},{"Timestamp":1127,"Mod":0,"Key":256,"Ch":99},{"Timestamp":1190,"Mod":0,"Key":256,"Ch":111},{"Timestamp":1335,"Mod":0,"Key":256,"Ch":109},{"Timestamp":1447,"Mod":0,"Key":256,"Ch":109},{"Timestamp":1583,"Mod":0,"Key":256,"Ch":105},{"Timestamp":1606,"Mod":0,"Key":256,"Ch":116},{"Timestamp":1935,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2353,"Mod":0,"Key":27,"Ch":0}],"ResizeEvents":[{"Timestamp":0,"Width":127,"Height":35}]}
diff --git a/test/integration/commit/test.json b/test/integration/commit/test.json
index 906dc342d..60bfe9319 100644
--- a/test/integration/commit/test.json
+++ b/test/integration/commit/test.json
@@ -1 +1 @@
-{ "description": "stage a file and commit the change", "speed": 20 }
+{ "description": "stage a file and commit the change", "speed": 15 }
diff --git a/test/lazyintegration/main.go b/test/lazyintegration/main.go
index 545ba0706..60c5e90d7 100644
--- a/test/lazyintegration/main.go
+++ b/test/lazyintegration/main.go
@@ -2,7 +2,6 @@ package main
import (
"encoding/json"
- "errors"
"fmt"
"io/ioutil"
"log"
@@ -16,15 +15,12 @@ import (
"github.com/jesseduffield/lazygit/pkg/secureexec"
)
-var errSubProcess = errors.New("subprocess")
-
type App struct {
- tests []*IntegrationTest
- itemIdx int
- subProcess *exec.Cmd
- testDir string
- editing bool
- g *gocui.Gui
+ tests []*IntegrationTest
+ itemIdx int
+ testDir string
+ editing bool
+ g *gocui.Gui
}
func (app *App) getCurrentTest() *IntegrationTest {
@@ -70,215 +66,215 @@ func main() {
app := &App{testDir: testDir}
app.loadTests()
-Loop:
- for {
- g, err := gocui.NewGui(gocui.OutputTrue, false, gocui.NORMAL)
- if err != nil {
- log.Panicln(err)
- }
+ g, err := gocui.NewGui(gocui.OutputTrue, false, gocui.NORMAL, false)
+ if err != nil {
+ log.Panicln(err)
+ }
- g.Cursor = false
+ g.Cursor = false
- app.g = g
+ app.g = g
- g.SetManagerFunc(app.layout)
+ g.SetManagerFunc(app.layout)
- if err := g.SetKeybinding("list", nil, gocui.KeyArrowUp, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- if app.itemIdx > 0 {
- app.itemIdx--
- }
- return nil
- }); err != nil {
- log.Panicln(err)
+ if err := g.SetKeybinding("list", nil, gocui.KeyArrowUp, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ if app.itemIdx > 0 {
+ app.itemIdx--
}
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
- if err := g.SetKeybinding("list", nil, gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
- log.Panicln(err)
- }
+ if err := g.SetKeybinding("list", nil, gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
+ log.Panicln(err)
+ }
- if err := g.SetKeybinding("list", nil, 'q', gocui.ModNone, quit); err != nil {
- log.Panicln(err)
+ if err := g.SetKeybinding("list", nil, 'q', gocui.ModNone, quit); err != nil {
+ log.Panicln(err)
+ }
+
+ if err := g.SetKeybinding("list", nil, 'r', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ currentTest := app.getCurrentTest()
+ if currentTest == nil {
+ return nil
}
- if err := g.SetKeybinding("list", nil, 'r', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- currentTest := app.getCurrentTest()
- if currentTest == nil {
- return nil
- }
+ cmd := secureexec.Command("sh", "-c", fmt.Sprintf("RECORD_EVENTS=true go run integration/main.go %s", currentTest.Name))
+ app.runSubprocess(cmd)
- cmd := secureexec.Command("sh", "-c", fmt.Sprintf("RECORD_EVENTS=true go test pkg/gui/gui_test.go -run /%s", currentTest.Name))
- app.subProcess = cmd
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
- return errSubProcess
- }); err != nil {
- log.Panicln(err)
+ if err := g.SetKeybinding("list", nil, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ currentTest := app.getCurrentTest()
+ if currentTest == nil {
+ return nil
}
- if err := g.SetKeybinding("list", nil, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- currentTest := app.getCurrentTest()
- if currentTest == nil {
- return nil
- }
+ cmd := secureexec.Command("sh", "-c", fmt.Sprintf("go run integration/main.go %s", currentTest.Name))
+ app.runSubprocess(cmd)
- cmd := secureexec.Command("sh", "-c", fmt.Sprintf("go test pkg/gui/gui_test.go -run /%s", currentTest.Name))
- app.subProcess = cmd
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
- return errSubProcess
- }); err != nil {
- log.Panicln(err)
+ if err := g.SetKeybinding("list", nil, 'o', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ currentTest := app.getCurrentTest()
+ if currentTest == nil {
+ return nil
}
- if err := g.SetKeybinding("list", nil, 'o', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- currentTest := app.getCurrentTest()
- if currentTest == nil {
- return nil
- }
+ cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code -r %s/%s/test.json", app.testDir, currentTest.Name))
+ if err := cmd.Run(); err != nil {
+ return err
+ }
- cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code -r %s/%s/test.json", app.testDir, currentTest.Name))
- if err := cmd.Run(); err != nil {
- return err
- }
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
+ if err := g.SetKeybinding("list", nil, 'n', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ currentTest := app.getCurrentTest()
+ if currentTest == nil {
return nil
- }); err != nil {
- log.Panicln(err)
}
- if err := g.SetKeybinding("list", nil, 'n', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- currentTest := app.getCurrentTest()
- if currentTest == nil {
- return nil
- }
+ // need to duplicate that folder and then re-fetch our tests.
+ dir := app.testDir + "/" + app.getCurrentTest().Name
+ newDir := dir + "_Copy"
- // need to duplicate that folder and then re-fetch our tests.
- dir := app.testDir + "/" + app.getCurrentTest().Name
- newDir := dir + "_Copy"
+ cmd := secureexec.Command("sh", "-c", fmt.Sprintf("cp -r %s %s", dir, newDir))
+ if err := cmd.Run(); err != nil {
+ return err
+ }
- cmd := secureexec.Command("sh", "-c", fmt.Sprintf("cp -r %s %s", dir, newDir))
- if err := cmd.Run(); err != nil {
- return err
- }
+ app.loadTests()
- app.loadTests()
+ app.refreshTests()
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
- app.refreshTests()
+ if err := g.SetKeybinding("list", nil, 'm', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ currentTest := app.getCurrentTest()
+ if currentTest == nil {
return nil
- }); err != nil {
- log.Panicln(err)
}
- if err := g.SetKeybinding("list", nil, 'm', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- currentTest := app.getCurrentTest()
- if currentTest == nil {
- return nil
- }
+ app.editing = true
+ if _, err := g.SetCurrentView("editor"); err != nil {
+ return err
+ }
+ editorView, err := g.View("editor")
+ if err != nil {
+ return err
+ }
+ editorView.Clear()
+ fmt.Fprint(editorView, currentTest.Name)
- app.editing = true
- if _, err := g.SetCurrentView("editor"); err != nil {
- return err
- }
- editorView, err := g.View("editor")
- if err != nil {
- return err
- }
- editorView.Clear()
- fmt.Fprint(editorView, currentTest.Name)
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
+ if err := g.SetKeybinding("list", nil, 'd', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ currentTest := app.getCurrentTest()
+ if currentTest == nil {
return nil
- }); err != nil {
- log.Panicln(err)
}
- if err := g.SetKeybinding("list", nil, 'd', gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- currentTest := app.getCurrentTest()
- if currentTest == nil {
- return nil
- }
+ dir := app.testDir + "/" + app.getCurrentTest().Name
- dir := app.testDir + "/" + app.getCurrentTest().Name
+ cmd := secureexec.Command("sh", "-c", fmt.Sprintf("rm -rf %s", dir))
+ if err := cmd.Run(); err != nil {
+ return err
+ }
- cmd := secureexec.Command("sh", "-c", fmt.Sprintf("rm -rf %s", dir))
- if err := cmd.Run(); err != nil {
- return err
- }
+ app.refreshTests()
- app.refreshTests()
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
+ if err := g.SetKeybinding("editor", nil, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ currentTest := app.getCurrentTest()
+ if currentTest == nil {
return nil
- }); err != nil {
- log.Panicln(err)
}
- if err := g.SetKeybinding("editor", nil, gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- currentTest := app.getCurrentTest()
- if currentTest == nil {
- return nil
- }
+ app.editing = false
+ if _, err := g.SetCurrentView("list"); err != nil {
+ return err
+ }
- app.editing = false
- if _, err := g.SetCurrentView("list"); err != nil {
- return err
- }
+ editorView, err := g.View("editor")
+ if err != nil {
+ return err
+ }
- editorView, err := g.View("editor")
- if err != nil {
- return err
- }
+ dir := app.testDir + "/" + app.getCurrentTest().Name
+ newDir := app.testDir + "/" + editorView.Buffer()
- dir := app.testDir + "/" + app.getCurrentTest().Name
- newDir := app.testDir + "/" + editorView.Buffer()
+ cmd := secureexec.Command("sh", "-c", fmt.Sprintf("mv %s %s", dir, newDir))
+ if err := cmd.Run(); err != nil {
+ return err
+ }
- cmd := secureexec.Command("sh", "-c", fmt.Sprintf("mv %s %s", dir, newDir))
- if err := cmd.Run(); err != nil {
- return err
- }
+ editorView.Clear()
- editorView.Clear()
+ app.refreshTests()
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
- app.refreshTests()
- return nil
- }); err != nil {
- log.Panicln(err)
+ if err := g.SetKeybinding("editor", nil, gocui.KeyEsc, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
+ app.editing = false
+ if _, err := g.SetCurrentView("list"); err != nil {
+ return err
}
- if err := g.SetKeybinding("editor", nil, gocui.KeyEsc, gocui.ModNone, func(*gocui.Gui, *gocui.View) error {
- app.editing = false
- if _, err := g.SetCurrentView("list"); err != nil {
- return err
- }
+ return nil
+ }); err != nil {
+ log.Panicln(err)
+ }
- return nil
- }); err != nil {
+ err = g.MainLoop()
+ g.Close()
+ if err != nil {
+ switch err {
+ case gocui.ErrQuit:
+ return
+ default:
log.Panicln(err)
}
+ }
+}
- err = g.MainLoop()
- g.Close()
- if err != nil {
- switch err {
- case gocui.ErrQuit:
- break Loop
-
- case errSubProcess:
- cmd := app.subProcess
- cmd.Stdin = os.Stdin
- cmd.Stderr = os.Stderr
- cmd.Stdout = os.Stdout
- if err := cmd.Run(); err != nil {
- log.Println(err.Error())
- }
- cmd.Stdin = nil
- cmd.Stderr = nil
- cmd.Stdout = nil
-
- fmt.Fprintf(os.Stdout, "\n%s", coloredString("press enter to return", color.FgGreen))
- fmt.Scanln() // wait for enter press
-
- default:
- log.Panicln(err)
- }
- }
+func (app *App) runSubprocess(cmd *exec.Cmd) {
+ gocui.Screen.Suspend()
+
+ cmd.Stdin = os.Stdin
+ cmd.Stderr = os.Stderr
+ cmd.Stdout = os.Stdout
+ if err := cmd.Run(); err != nil {
+ log.Println(err.Error())
}
+ cmd.Stdin = nil
+ cmd.Stderr = nil
+ cmd.Stdout = nil
+
+ fmt.Fprintf(os.Stdout, "\n%s", coloredString("press enter to return", color.FgGreen))
+ fmt.Scanln() // wait for enter press
+
+ gocui.Screen.Resume()
}
func (app *App) layout(g *gocui.Gui) error {