diff --git a/Makefile b/Makefile index e32fe95e49e123185dacd94596961fef8ae63d5d..406888aa368689f6f51b991a1ac421b29f909625 100644 --- a/Makefile +++ b/Makefile @@ -45,5 +45,5 @@ build-rpm-all: source clean: $(PYTHON) setup.py clean $(MAKE) -f $(CURDIR)/debian/rules clean || true - rm -rf build/ MANIFEST BUILD BUILDROOT SPECS RPMS SRPMS + rm -rf build/ MANIFEST BUILD BUILDROOT SPECS RPMS SRPMS SOURCES find . -name '*.pyc' -delete diff --git a/avocado/core/output.py b/avocado/core/output.py index 367151af18b44b362b0d4143649fad0a6308c452..bd9d219bd154ad39dba655f7017834b7f4270e34 100644 --- a/avocado/core/output.py +++ b/avocado/core/output.py @@ -45,17 +45,41 @@ class ProgressStreamHandler(logging.StreamHandler): self.handleError(record) +class Paginator(object): + + """ + Paginator that uses less to display contents on the terminal. + + Contains cleanup handling for when user presses 'q' (to quit less). + """ + + def __init__(self): + less_cmd = process.find_command('less') + self.pipe = os.popen('%s -FRSX' % less_cmd, 'w') + + def __del__(self): + try: + self.pipe.close() + except IOError: + pass + + def write(self, msg): + try: + self.pipe.write(msg) + except IOError: + pass + + def get_paginator(): """ - Get a pipe. If we can't do that, return stdout. + Get a paginator. If we can't do that, return stdout. The paginator is 'less'. The paginator is a useful feature inspired in programs such as git, since it lets you scroll up and down large buffers of text, increasing the program's usability. """ try: - less_cmd = process.find_command('less') - return os.popen('%s -FRSX' % less_cmd, 'w') + return Paginator() except process.CmdNotFoundError: return sys.stdout @@ -238,7 +262,7 @@ class OutputManager(object): else: self.log_partial(self.THROBBER_MOVES[self.throbber_pos], True) - if self.throbber_pos == (len(self.THROBBER_MOVES)-1): + if self.throbber_pos == (len(self.THROBBER_MOVES) - 1): self.throbber_pos = 0 else: self.throbber_pos += 1 diff --git a/avocado/core/tree.py b/avocado/core/tree.py index 9638f379c75ed8550f0fd02005b9db2361185a07..260f692857dad547a9451a688f43ec5f56afd1df 100644 --- a/avocado/core/tree.py +++ b/avocado/core/tree.py @@ -113,7 +113,7 @@ class TreeNode(object): def get_environment(self): def update_or_extend(target, source): - for k, v in source.items(): + for k, _ in source.items(): if target.has_key(k) and isinstance(target[k], list): target[k].extend(source[k]) else: @@ -148,8 +148,8 @@ class TreeNode(object): return list(self.iter_leaves()) def get_ascii(self, show_internal=True, compact=False, attributes=None): - (lines, mid) = self._ascii_art(show_internal=show_internal, - compact=compact, attributes=attributes) + (lines, _) = self._ascii_art(show_internal=show_internal, + compact=compact, attributes=attributes) return '\n' + '\n'.join(lines) def _ascii_art(self, char1='-', show_internal=True, compact=False, attributes=None): @@ -218,10 +218,6 @@ def create_from_ordered_data(data, tree=None, root=None, name='/root'): if isinstance(data, dict): for key, value in data.items(): if isinstance(value, dict): - leaf = True - for k, v in value.items(): - if isinstance(v, dict): - leaf = False node = TreeNode(key) tree.add_child(node) create_from_ordered_data(value, node, root) diff --git a/avocado/job.py b/avocado/job.py index e065ea07d791f6fe9f9f515a02c4cc050340b2d5..378f032cfdafdbdda24b54400e7759088a5cbc0c 100644 --- a/avocado/job.py +++ b/avocado/job.py @@ -414,7 +414,6 @@ class Job(object): params_list = [] if urls is not None: for url in urls: - test_module = os.path.basename(url).split('.')[0] try: variants = multiplexer.create_variants_from_yaml(open(multiplex_file)) except SyntaxError: diff --git a/avocado/plugins/multiplexer.py b/avocado/plugins/multiplexer.py index 9545bb73e7384906e4a4c5266b0039c34d60b257..a2487add950b3a7efa57c34e24daedf675712358 100644 --- a/avocado/plugins/multiplexer.py +++ b/avocado/plugins/multiplexer.py @@ -68,15 +68,19 @@ class Multiplexer(plugin.Plugin): data = tree.read_ordered_yaml(open(multiplex_file)) t = tree.create_from_ordered_data(data) pipe.write(t.get_ascii()) - sys.exit(0) + sys.exit(error_codes.numeric_status['AVOCADO_ALL_OK']) variants = multiplexer.create_variants_from_yaml(open(multiplex_file)) pipe.write(bcolors.header_str('Variants generated:')) pipe.write('\n') - for (index, dct) in enumerate(variants): - pipe.write(' Variant %s: %s\n' % (index+1, [str(x) for x in dct])) + for (index, tpl) in enumerate(variants): + pipe.write('Variant %s: %s\n' % (index+1, [str(x) for x in tpl])) if args.contents: - for key in sorted(dct.keys()): - pipe.write(' %s = %s\n' % (key, dct.get(key))) + env = {} + for node in tpl: + env.update(node.environment) + for k in sorted(env.keys()): + pipe.write(' %s: %s\n' % (k, env[k])) + sys.exit(error_codes.numeric_status['AVOCADO_ALL_OK']) diff --git a/tests/synctest.py.data/synctest.yaml b/tests/synctest.py.data/synctest.yaml index 80d94df3e72fb68e9e1dbe6f6cbbb2ee45e76170..adb1311fb03fee607687ee44cf5175e7efd72096 100644 --- a/tests/synctest.py.data/synctest.yaml +++ b/tests/synctest.py.data/synctest.yaml @@ -1,10 +1,15 @@ sync_tarball: synctest.tar.bz2 -short: - sync_loop: 10 - sync_length: 100 -medium: - sync_loop: 50 - sync_length: 500 -long: - sync_loop: 100 - sync_length: 1000 +loop: + short: + sync_loop: 10 + medium: + sync_loop: 50 + long: + sync_loop: 100 +length: + short: + sync_length: 100 + medium: + sync_length: 500 + long: + sync_length: 1000