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
diff --git a/tests/print_layout.py b/tests/print_layout.py
new file mode 100644
index 0000000..9afd379
--- /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()