mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 18:05:35 +00:00
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:
@@ -39,6 +39,32 @@ type TestDriver interface {
|
|||||||
Click(x, y int)
|
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) {
|
func runEndToEndTest(t *testing.T, driver TestDriver) {
|
||||||
size := image.Point{X: 800, Y: 600}
|
size := image.Point{X: 800, Y: 600}
|
||||||
cleanups := driver.Start(t, "testdata/red.go", size.X, size.Y)
|
cleanups := driver.Start(t, "testdata/red.go", size.X, size.Y)
|
||||||
|
|||||||
@@ -152,9 +152,3 @@ func (d *JSTestDriver) Click(x, y int) {
|
|||||||
// TODO(mvdan): synchronize with the app instead
|
// TODO(mvdan): synchronize with the app instead
|
||||||
time.Sleep(200 * time.Millisecond)
|
time.Sleep(200 * time.Millisecond)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJS(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
runEndToEndTest(t, &JSTestDriver{})
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -231,9 +231,3 @@ func (d *WaylandTestDriver) Click(x, y int) {
|
|||||||
// Wait for the gio app to render after this click.
|
// Wait for the gio app to render after this click.
|
||||||
<-d.frameNotifs
|
<-d.frameNotifs
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestWayland(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
runEndToEndTest(t, &WaylandTestDriver{})
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -204,9 +204,3 @@ func (d *X11TestDriver) Click(x, y int) {
|
|||||||
// Wait for the gio app to render after this click.
|
// Wait for the gio app to render after this click.
|
||||||
<-d.frameNotifs
|
<-d.frameNotifs
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestX11(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
runEndToEndTest(t, &X11TestDriver{})
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user