mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-02 07:57:29 +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)
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
@@ -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{})
|
||||
}
|
||||
|
||||
@@ -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{})
|
||||
}
|
||||
|
||||
@@ -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{})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user