From 6cdf2f2047edcd1fa55ab9ee1e74d76d9a1af8bd Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Mon, 25 Jul 2016 16:07:02 -0700 Subject: [PATCH] Add utility program to print test fixture configuration In-repo configuration means that test configs are more complex, requiring directory hierarchies representing multiple git repos. To aid a developer wanting to see a test configuration at a glance, add a script to print out the relevant files. Change-Id: I5599c72be343c0e391d8789434e7793cac83ec41 --- tests/print_layout.py | 65 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tests/print_layout.py diff --git a/tests/print_layout.py b/tests/print_layout.py new file mode 100644 index 0000000000..9afd379b8b --- /dev/null +++ b/tests/print_layout.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python + +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import argparse +import os +import sys + +import tests.base + +CONFIG_DIR = os.path.join(tests.base.FIXTURE_DIR, 'config') + + +def print_file(title, path): + print('') + print(title) + print('-' * 78) + with open(path) as f: + print(f.read()) + print('-' * 78) + + +def main(): + parser = argparse.ArgumentParser(description='Print test layout.') + parser.add_argument(dest='config', nargs='?', + help='the test configuration name') + args = parser.parse_args() + if not args.config: + print('Available test configurations:') + for d in os.listdir(CONFIG_DIR): + print(' ' + d) + sys.exit(1) + configdir = os.path.join(CONFIG_DIR, args.config) + + title = ' Configuration: %s ' % args.config + print('=' * len(title)) + print(title) + print('=' * len(title)) + print_file('Main Configuration', + os.path.join(configdir, 'main.yaml')) + + gitroot = os.path.join(configdir, 'git') + for gitrepo in os.listdir(gitroot): + reporoot = os.path.join(gitroot, gitrepo) + print('') + print('=== Git repo: %s ===' % gitrepo) + filenames = os.listdir(reporoot) + for fn in filenames: + if fn in ['zuul.yaml', '.zuul.yaml']: + print_file('File: ' + os.path.join(gitrepo, fn), + os.path.join(reporoot, fn)) + + +if __name__ == '__main__': + main()