cmd/gogio: join all endtoend tests as subtests

This means we can deduplicate some of the logic, and keep it all in one
place.

Start expanding the logic too; the tests are slow, so they should be
skipped on 'go test -short'. The ones we have so far all run in a matter
of seconds on an average laptop today, but future tests will probably
require heavier work like wine or kvm.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
This commit is contained in:
Daniel Martí
2019-11-06 16:52:36 +00:00
committed by Elias Naur
parent 62da32be9c
commit 6f860200b9
4 changed files with 26 additions and 18 deletions
+26
View File
@@ -39,6 +39,32 @@ type TestDriver interface {
Click(x, y int)
}
func TestEndToEnd(t *testing.T) {
if testing.Short() {
t.Skipf("end-to-end tests tend to be slow")
}
t.Parallel()
// Keep this list local, to not reuse TestDriver objects.
subtests := []struct{
name string
driver TestDriver
}{
{"X11", &X11TestDriver{}},
{"Wayland", &WaylandTestDriver{}},
{"JS", &JSTestDriver{}},
}
for _, subtest := range subtests {
t.Run(subtest.name, func(t *testing.T) {
subtest := subtest // copy the changing loop variable
t.Parallel()
runEndToEndTest(t, subtest.driver)
})
}
}
func runEndToEndTest(t *testing.T, driver TestDriver) {
size := image.Point{X: 800, Y: 600}
cleanups := driver.Start(t, "testdata/red.go", size.X, size.Y)
-6
View File
@@ -152,9 +152,3 @@ func (d *JSTestDriver) Click(x, y int) {
// TODO(mvdan): synchronize with the app instead
time.Sleep(200 * time.Millisecond)
}
func TestJS(t *testing.T) {
t.Parallel()
runEndToEndTest(t, &JSTestDriver{})
}
-6
View File
@@ -231,9 +231,3 @@ func (d *WaylandTestDriver) Click(x, y int) {
// Wait for the gio app to render after this click.
<-d.frameNotifs
}
func TestWayland(t *testing.T) {
t.Parallel()
runEndToEndTest(t, &WaylandTestDriver{})
}
-6
View File
@@ -204,9 +204,3 @@ func (d *X11TestDriver) Click(x, y int) {
// Wait for the gio app to render after this click.
<-d.frameNotifs
}
func TestX11(t *testing.T) {
t.Parallel()
runEndToEndTest(t, &X11TestDriver{})
}