diff options
Diffstat (limited to 'tests/cloud_tests/manage.py')
| -rw-r--r-- | tests/cloud_tests/manage.py | 75 | 
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/cloud_tests/manage.py b/tests/cloud_tests/manage.py new file mode 100644 index 00000000..5342612b --- /dev/null +++ b/tests/cloud_tests/manage.py @@ -0,0 +1,75 @@ +# This file is part of cloud-init. See LICENSE file for license information. + +from tests.cloud_tests.config import VERIFY_EXT +from tests.cloud_tests import (config, util) +from tests.cloud_tests import TESTCASES_DIR + +import os +import textwrap + +_verifier_fmt = textwrap.dedent( +    """ +    \"\"\"cloud-init Integration Test Verify Script\"\"\" +    from tests.cloud_tests.testcases import base + + +    class {test_class}(base.CloudTestCase): +        \"\"\" +        Name: {test_name} +        Category: {test_category} +        Description: {test_description} +        \"\"\" +        pass +    """ +).lstrip() +_config_fmt = textwrap.dedent( +    """ +    # +    # Name: {test_name} +    # Category: {test_category} +    # Description: {test_description} +    # +    {config} +    """ +).strip() + + +def write_testcase_config(args, fmt_args, testcase_file): +    """ +    write the testcase config file +    """ +    testcase_config = {'enabled': args.enable, 'collect_scripts': {}} +    if args.config: +        testcase_config['cloud_config'] = args.config +    fmt_args['config'] = util.yaml_format(testcase_config) +    util.write_file(testcase_file, _config_fmt.format(**fmt_args), omode='w') + + +def write_verifier(args, fmt_args, verifier_file): +    """ +    write the verifier script +    """ +    fmt_args['test_class'] = 'Test{}'.format( +        config.name_sanatize(fmt_args['test_name']).title()) +    util.write_file(verifier_file, _verifier_fmt.format(**fmt_args), omode='w') + + +def create(args): +    """ +    create a new testcase +    """ +    (test_category, test_name) = args.name.split('/') +    fmt_args = {'test_name': test_name, 'test_category': test_category, +                'test_description': str(args.description)} + +    testcase_file = config.name_to_path(args.name) +    verifier_file = os.path.join( +        TESTCASES_DIR, test_category, +        config.name_sanatize(test_name) + VERIFY_EXT) + +    write_testcase_config(args, fmt_args, testcase_file) +    write_verifier(args, fmt_args, verifier_file) + +    return 0 + +# vi: ts=4 expandtab  | 
