Message ID | 1458196505-5473-11-git-send-email-famz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 --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())
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