From 291e4b4d9500482280bac89c1457d3505fcccec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rud=C3=A1=20Moura?= Date: Thu, 19 Feb 2015 11:56:37 -0200 Subject: [PATCH] multiplexer: Graceful disable it if PyYAML is not installed. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test for feature MULTIPLEX_CAPABLE to graful disable the multiplexer if PyYAML is not installed. Signed-off-by: Rudá Moura --- avocado/core/tree.py | 15 ++++++++++----- avocado/job.py | 16 +++++++++------- avocado/multiplexer.py | 2 ++ avocado/plugins/multiplexer.py | 3 +++ avocado/plugins/runner.py | 16 +++++++++------- 5 files changed, 33 insertions(+), 19 deletions(-) diff --git a/avocado/core/tree.py b/avocado/core/tree.py index b9897f15..da8dd1e5 100644 --- a/avocado/core/tree.py +++ b/avocado/core/tree.py @@ -37,13 +37,18 @@ import collections import os import re -import yaml - - try: - from yaml import CLoader as Loader + import yaml except ImportError: - from yaml import Loader + MULTIPLEX_CAPABLE = False +else: + MULTIPLEX_CAPABLE = True + +if MULTIPLEX_CAPABLE: + try: + from yaml import CLoader as Loader + except ImportError: + from yaml import Loader # Mapping for yaml flags diff --git a/avocado/job.py b/avocado/job.py index 34dcc28a..f5f89a1c 100644 --- a/avocado/job.py +++ b/avocado/job.py @@ -90,7 +90,8 @@ class Job(object): self.loglevel = mapping[raw_log_level] else: self.loglevel = logging.DEBUG - self.multiplex_files = args.multiplex_files + if multiplexer.MULTIPLEX_CAPABLE: + self.multiplex_files = args.multiplex_files self.show_job_log = args.show_job_log self.silent = args.silent else: @@ -259,13 +260,14 @@ class Job(object): params_list = self.test_loader.discover_urls(urls) - if multiplex_files is None: - if self.args and self.args.multiplex_files is not None: - multiplex_files = self.args.multiplex_files + if multiplexer.MULTIPLEX_CAPABLE: + if multiplex_files is None: + if self.args and self.args.multiplex_files is not None: + multiplex_files = self.args.multiplex_files - if multiplex_files is not None: - params_list = self._multiplex_params_list(params_list, - multiplex_files) + if multiplex_files is not None: + params_list = self._multiplex_params_list(params_list, + multiplex_files) try: test_suite = self.test_loader.discover(params_list) diff --git a/avocado/multiplexer.py b/avocado/multiplexer.py index 49329a48..7173b144 100644 --- a/avocado/multiplexer.py +++ b/avocado/multiplexer.py @@ -23,6 +23,8 @@ import itertools from avocado.core import tree +MULTIPLEX_CAPABLE = tree.MULTIPLEX_CAPABLE + def tree2pools(node, mux=True): """ diff --git a/avocado/plugins/multiplexer.py b/avocado/plugins/multiplexer.py index 8c7bd695..50d24535 100644 --- a/avocado/plugins/multiplexer.py +++ b/avocado/plugins/multiplexer.py @@ -32,6 +32,9 @@ class Multiplexer(plugin.Plugin): enabled = True def configure(self, parser): + if multiplexer.MULTIPLEX_CAPABLE is False: + self.enabled = False + return self.parser = parser.subcommands.add_parser( 'multiplex', help='Generate a list of dictionaries with params from a multiplex file') diff --git a/avocado/plugins/runner.py b/avocado/plugins/runner.py index 4a75c8ad..7e9e0139 100644 --- a/avocado/plugins/runner.py +++ b/avocado/plugins/runner.py @@ -23,6 +23,7 @@ from avocado.core import exit_codes from avocado.plugins import plugin from avocado.core import output from avocado import job +from avocado import multiplexer class TestRunner(plugin.Plugin): @@ -107,13 +108,14 @@ class TestRunner(plugin.Plugin): 'present for the test. ' 'Current: False (output check enabled)')) - mux = self.parser.add_argument_group('multiplex arguments') - mux.add_argument('-m', '--multiplex-files', nargs='*', default=None, - help='Path(s) to a avocado multiplex (.yaml) file(s)') - mux.add_argument('--filter-only', nargs='*', default=[], - help='Filter only path(s) from multiplexing') - mux.add_argument('--filter-out', nargs='*', default=[], - help='Filter out path(s) from multiplexing') + if multiplexer.MULTIPLEX_CAPABLE: + mux = self.parser.add_argument_group('multiplex arguments') + mux.add_argument('-m', '--multiplex-files', nargs='*', default=None, + help='Path(s) to a avocado multiplex (.yaml) file(s)') + mux.add_argument('--filter-only', nargs='*', default=[], + help='Filter only path(s) from multiplexing') + mux.add_argument('--filter-out', nargs='*', default=[], + help='Filter out path(s) from multiplexing') super(TestRunner, self).configure(self.parser) # Export the test runner parser back to the main parser -- GitLab