#!/usr/bin/env python3 import _prep import sys import os import io import pprint import copy from osmo_gsm_tester.core import config, log, schema def val(which, test_schema): try: schema.validate(which, test_schema) print('Validation: OK') except ValueError: log.log_exn() print('Validation: Error') def get_case_list(dir): li = [] for f in os.listdir(dir): if f.startswith('schema_case'): li.append(f) return sorted(li) def test_validator(val): return val in ('valid_value1', 'valid_value2') schema.register_schema_types({'test_type': test_validator, 'another_type': lambda val: val == 'unique_val_ok'}) print('==== Testing dynamically generated schemas ====') for f in get_case_list(_prep.script_dir): print('%s:' % f) example_config = os.path.join(_prep.script_dir, f) cfg = config.read(example_config) try: schema_def = schema.config_to_schema_def(cfg['schema'], 'foobar.prefix.') except AssertionError: schema_def = None log.log_exn() print('config2schema: Error') if schema_def is not None: pprint.pprint(schema_def) i = 0 for t in cfg['tests']: print('validating tests[%d]' % i) val(t, schema_def) i += 1 print('----------------------') # vim: expandtab tabstop=4 shiftwidth=4