diff mbox

[v4,10/13] docker: Add travis tool

Message ID 1458196505-5473-11-git-send-email-famz@redhat.com
State New
Headers show

Commit Message

Fam Zheng March 17, 2016, 6:35 a.m. UTC
The script is not prefixed with test- so it won't run with "make docker-test",
because it can take too long.

Run it with "make docker-travis@ubuntu".

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 tests/docker/travis    | 21 +++++++++++++++++++++
 tests/docker/travis.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100755 tests/docker/travis
 create mode 100755 tests/docker/travis.py

Comments

Alex Bennée March 31, 2016, 1:14 p.m. UTC | #1
Fam Zheng <famz@redhat.com> writes:

> The script is not prefixed with test- so it won't run with "make docker-test",
> because it can take too long.
>
> Run it with "make docker-travis@ubuntu".

Currently we can only really use this with ubuntu anyway. How would you
expand the matrix on other platforms? Tweak the docker files for
dependencies or feed it via travis somehow?

Anyway:

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

>
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  tests/docker/travis    | 21 +++++++++++++++++++++
>  tests/docker/travis.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 69 insertions(+)
>  create mode 100755 tests/docker/travis
>  create mode 100755 tests/docker/travis.py
>
> diff --git a/tests/docker/travis b/tests/docker/travis
> new file mode 100755
> index 0000000..d345393
> --- /dev/null
> +++ b/tests/docker/travis
> @@ -0,0 +1,21 @@
> +#!/bin/bash -e
> +#
> +# Mimic a travis testing matrix
> +#
> +# Copyright (c) 2016 Red Hat Inc.
> +#
> +# Authors:
> +#  Fam Zheng <famz@redhat.com>
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2
> +# or (at your option) any later version. See the COPYING file in
> +# the top-level directory.
> +
> +. common.rc
> +
> +requires pyyaml
> +cmdfile=/tmp/travis_cmd_list.sh
> +$QEMU_SRC/tests/docker/travis.py $QEMU_SRC/.travis.yml > $cmdfile
> +chmod +x $cmdfile
> +cd "$QEMU_SRC"
> +$cmdfile
> diff --git a/tests/docker/travis.py b/tests/docker/travis.py
> new file mode 100755
> index 0000000..8dcc964
> --- /dev/null
> +++ b/tests/docker/travis.py
> @@ -0,0 +1,48 @@
> +#!/usr/bin/env python
> +#
> +# Travis YAML config parser
> +#
> +# Copyright (c) 2016 Red Hat Inc.
> +#
> +# Authors:
> +#  Fam Zheng <famz@redhat.com>
> +#
> +# This work is licensed under the terms of the GNU GPL, version 2
> +# or (at your option) any later version. See the COPYING file in
> +# the top-level directory.
> +
> +import sys
> +import yaml
> +import itertools
> +
> +def load_yaml(fname):
> +    return yaml.load(open(fname, "r").read())
> +
> +def conf_iter(conf):
> +    def env_to_list(env):
> +        return env if isinstance(env, list) else [env]
> +    global_env = conf["env"]["global"]
> +    for entry in conf["matrix"]["include"]:
> +        yield {"env": global_env + env_to_list(entry["env"]),
> +               "compiler": entry["compiler"]}
> +    for entry in itertools.product(conf["compiler"],
> +                                   conf["env"]["matrix"]):
> +        yield {"env": global_env + env_to_list(entry[1]),
> +               "compiler": entry[0]}
> +
> +def main():
> +    if len(sys.argv) < 2:
> +        sys.stderr.write("Usage: %s <travis-file>\n" % sys.argv[0])
> +        return 1
> +    conf = load_yaml(sys.argv[1])
> +    for config in conf_iter(conf):
> +        print "("
> +        print "\n".join(config["env"])
> +        print "alias cc=" + config["compiler"]
> +        print "\n".join(conf["before_script"])
> +        print "\n".join(conf["script"])
> +        print ")"
> +    return 0
> +
> +if __name__ == "__main__":
> +    sys.exit(main())


--
Alex Bennée
diff mbox

Patch

diff --git a/tests/docker/travis b/tests/docker/travis
new file mode 100755
index 0000000..d345393
--- /dev/null
+++ b/tests/docker/travis
@@ -0,0 +1,21 @@ 
+#!/bin/bash -e
+#
+# Mimic a travis testing matrix
+#
+# Copyright (c) 2016 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng <famz@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2
+# or (at your option) any later version. See the COPYING file in
+# the top-level directory.
+
+. common.rc
+
+requires pyyaml
+cmdfile=/tmp/travis_cmd_list.sh
+$QEMU_SRC/tests/docker/travis.py $QEMU_SRC/.travis.yml > $cmdfile
+chmod +x $cmdfile
+cd "$QEMU_SRC"
+$cmdfile
diff --git a/tests/docker/travis.py b/tests/docker/travis.py
new file mode 100755
index 0000000..8dcc964
--- /dev/null
+++ b/tests/docker/travis.py
@@ -0,0 +1,48 @@ 
+#!/usr/bin/env python
+#
+# Travis YAML config parser
+#
+# Copyright (c) 2016 Red Hat Inc.
+#
+# Authors:
+#  Fam Zheng <famz@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2
+# or (at your option) any later version. See the COPYING file in
+# the top-level directory.
+
+import sys
+import yaml
+import itertools
+
+def load_yaml(fname):
+    return yaml.load(open(fname, "r").read())
+
+def conf_iter(conf):
+    def env_to_list(env):
+        return env if isinstance(env, list) else [env]
+    global_env = conf["env"]["global"]
+    for entry in conf["matrix"]["include"]:
+        yield {"env": global_env + env_to_list(entry["env"]),
+               "compiler": entry["compiler"]}
+    for entry in itertools.product(conf["compiler"],
+                                   conf["env"]["matrix"]):
+        yield {"env": global_env + env_to_list(entry[1]),
+               "compiler": entry[0]}
+
+def main():
+    if len(sys.argv) < 2:
+        sys.stderr.write("Usage: %s <travis-file>\n" % sys.argv[0])
+        return 1
+    conf = load_yaml(sys.argv[1])
+    for config in conf_iter(conf):
+        print "("
+        print "\n".join(config["env"])
+        print "alias cc=" + config["compiler"]
+        print "\n".join(conf["before_script"])
+        print "\n".join(conf["script"])
+        print ")"
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main())