cmd/gogio: groundwork for Windows e2e tests on Wine

First, move from debian unstable to testing, since sway was promoted to
testing as of earlier this week.

Second, use the --sync option when using xdotool to move an X11 mouse.
This makes the command block until the mouse has finished moving to the
specified location, removing a potential race with the following
'xdotool click' command.

Third, deduplicate some logic into driverBase: tempDir to create a
temporary directory within a test, and needPrograms to skip a test if
the required programs aren't available.

Lastly, split the code that starts the X11 server into a method, so that
the future Wine e2e driver can reuse it. Since Wine is tightly coupled
with X11, we can reuse a good part of the code, including the X11 server
and the xdotool mechanisms.

We also add a TODO to perhaps improve the handling of the app's output
under each of the e2e test cases.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
This commit is contained in:
Daniel Martí
2020-03-01 15:47:59 +00:00
committed by Elias Naur
parent 48eb5c666c
commit b064899967
6 changed files with 96 additions and 104 deletions
+3 -13
View File
@@ -10,7 +10,6 @@ import (
"image"
"image/png"
"io"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
@@ -47,23 +46,14 @@ func (d *WaylandTestDriver) Start(path string, width, height int) {
env = append(env, "WLR_BACKENDS=headless")
}
for _, prog := range []string{
d.needPrograms(
"sway", // to run a wayland compositor
"grim", // to take screenshots
"swaymsg", // to send input
} {
if _, err := exec.LookPath(prog); err != nil {
d.Skipf("%s needed to run", prog)
}
}
)
// First, build the app.
dir, err := ioutil.TempDir("", "gio-endtoend-wayland")
if err != nil {
d.Fatal(err)
}
d.Cleanup(func() { os.RemoveAll(dir) })
dir := d.tempDir("gio-endtoend-wayland")
bin := filepath.Join(dir, "red")
flags := []string{"build", "-tags", "nox11", "-o=" + bin}
if raceEnabled {