Adding a basic specter runner

Change-Id: I55434e6c1a6be69d615833001077b8c5076492d1
This commit is contained in:
John Vrbanac 2013-11-04 10:30:19 -06:00
parent 804d7f18bc
commit 269d121f9d
4 changed files with 114 additions and 0 deletions

View File

@ -13,3 +13,49 @@ 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
def parse_runner_args(arg_parser):
""" Generic CAFE args for external runners"""
arg_parser.add_argument(
"product",
nargs=1,
metavar="<product>",
help="Product name")
arg_parser.add_argument(
"config",
nargs=1,
metavar="<config_file>",
help="Product test config")
arg_parser.add_argument(
dest='cmd_opts',
nargs=argparse.REMAINDER,
metavar="<cmd_opts>",
help="Options to pass to the test runner")
return arg_parser.parse_args()
def print_mug(name, brewing_from):
""" Generic CAFE mug """
border = '-' * 40
mug = """
Brewing from {path}
( (
) )
.........
| |___
| |_ |
| :-) |_| |
| |___|
|_______|
=== CAFE {name} Runner ===""".format(
path=brewing_from, name=name)
print border
print mug
print border

View File

@ -0,0 +1,15 @@
"""
Copyright 2013 Rackspace
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.
"""

View File

@ -0,0 +1,52 @@
"""
Copyright 2013 Rackspace
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 subprocess
from cafe.configurator.managers import TestEnvManager
from cafe.drivers import print_mug, parse_runner_args
def entry_point():
# Setup and parse arguments
arg_parser = argparse.ArgumentParser(prog='specter-runner')
args = parse_runner_args(arg_parser)
config = str(args.config[0]) + '.config'
product = str(args.product[0])
cmd_opts = args.cmd_opts
test_env_manager = TestEnvManager(product, config)
test_env_manager.finalize()
test_path = os.path.join(
test_env_manager.test_repo_path, product)
call_args = ['specter', '--search', test_path, '--no-art']
if len(cmd_opts) > 0:
call_args.extend(cmd_opts)
print_mug(name='Specter', brewing_from=test_path)
subprocess.call(call_args)
exit(0)
if __name__ == '__main__':
entry_point()

View File

@ -92,5 +92,6 @@ setup(
['cafe-runner = cafe.drivers.unittest.runner:entry_point',
'behave-runner = cafe.drivers.behave.runner:entry_point',
'vows-runner = cafe.drivers.pyvows.runner:entry_point',
'specter-runner = cafe.drivers.specter.runner:entry_point',
'cafe-config = cafe.configurator.cli:entry_point']},
cmdclass={'install': install})