def test_enum_alternatives(self): """ test various variants on enum constraints """ file = "alternatives" env.generate_single_file( env.expected_path(self.testdir, f'{file}.yaml'), lambda: YAMLGenerator(env.input_path(self.testdir, f'{file}.yaml') ).serialize(), filtr=yaml_filter, value_is_returned=True) python_name = f'{self.testdir}/{file}.py' YAMLGenerator(env.input_path(self.testdir, f'{file}.yaml'), mergeimports=False, log_level=logging.INFO).serialize() env.generate_single_file( python_name, lambda: PythonGenerator(env.input_path(self.testdir, f'{file}.yaml' ), importmap=env.import_map, mergeimports=False).serialize(), comparator=lambda exp, act: compare_python( exp, act, self.env.expected_path(python_name)), value_is_returned=True) module = compile_python(env.expected_path(python_name))
def test_minimal_model(self): """ Test to make the absolute minimal model work """ YAMLGenerator(env.input_path('issue_tccm', 'minimalmodel.yaml'), mergeimports=False, log_level=logging.INFO).serialize(validateonly=True) env.make_testing_directory(env.expected_path('issue_tccm')) for generator in Generator.__subclasses__(): if not generator.__module__.startswith('linkml.generators'): pass elif not generator.directory_output: env.generate_single_file( [ 'issue_tccm', 'minimalmodel.' + generator.valid_formats[0] ], lambda: generator(env.input_path('issue_tccm', 'minimalmodel.yaml'), importmap=env.import_map, mergeimports=False, emit_metadata=False).serialize(), value_is_returned=True) else: env.generate_directory( ['issue_tccm', generator.__name__], lambda d: generator( env.input_path('issue_tccm', 'minimalmodel.yaml'), importmap=env.import_map, mergeimports=False, emit_metadata=False).serialize(directory=d))
def _check_error(self, file: str, error: str) -> None: with self.assertRaises(ValueError, msg=error) as e: YAMLGenerator(env.input_path(self.testdir, f'{file}.yaml'), mergeimports=False, log_level=logging.INFO).serialize(validateonly=True) # print(str(e.exception)) self.assertIn(error, str(e.exception), error)
def _do_test(self, tfn): env.generate_single_file(f'{tfn}.yaml', lambda: YAMLGenerator(env.input_path(f'{tfn}.yaml'), log_level=INFO).serialize(), filtr=yaml_filter, value_is_returned=True) env.generate_single_file(f'{tfn}.context.jsonld', lambda: ContextGenerator(env.input_path(f'{tfn}.yaml')).serialize(), filtr=ldcontext_metadata_filter, value_is_returned=True)
def _check_warns(self, file: str, msgs: Union[str, List[str]]) -> None: with self.redirect_logstream() as logger: YAMLGenerator(env.input_path(self.testdir, f'{file}.yaml'), mergeimports=False, log_level=logging.INFO, logger=logger).serialize(validateonly=True) for msg in msgs if isinstance(msgs, list) else [msgs]: self.assertIn(msg, logger.result, msg)
def test_dictionary_name(self): """ Allow dictionaries w/ explicit keys or identifiers through as long as they match """ yaml = env.generate_single_file( ['issue_tccm', 'explicit_key_id.yaml'], lambda: YAMLGenerator(env.input_path('issue_tccm', 'explicit_key_id.yaml'), importmap=env.import_map, mergeimports=False, emit_metadata=False).serialize(), value_is_returned=True) print(yaml)
def test_mapping_prefix(self): """ Prefix validation fails in """ with self.redirect_logstream() as logger: YAMLGenerator(env.input_path('issue_tccm', 'illegal_mapping_prefix.yaml'), mergeimports=False, logger=logger).serialize(validateonly=True) self.assertIn('Unrecognized prefix: DO', logger.result, "Basic slot mapping validation failure") self.assertIn('Unrecognized prefix: RE', logger.result, "Basic class mapping validation failure") self.assertIn('Unrecognized prefix: MI', logger.result, "Solo slot usage mapping validation failure") self.assertIn('Unrecognized prefix: FA', logger.result, "Slot usage specialization validation failure") self.assertIn('Unrecognized prefix: SO', logger.result, "Slot usage variant validation failure") self.assertIn('Unrecognized prefix: LA', logger.result, "Inherited slot mapping validation failure") self.assertIn('Unrecognized prefix: TI', logger.result, "Inherited class mapping mapping validation failure")
def test_alt_description_2(self): with self.assertRaises(ValueError) as e: YAMLGenerator( env.input_path('issue_326a.yaml')).serialize(validateonly=True) self.assertIn('description must be supplied', str(e.exception))
def test_alt_description(self): """ Check alt descriptions """ YAMLGenerator( env.input_path('issue_326.yaml')).serialize(validateonly=True)
def test_empty_list(self): """ Check the local import behavior """ with self.assertRaises(yaml.constructor.ConstructorError) as e: YAMLGenerator( env.input_path('issue_276.yaml')).serialize(validateonly=True) self.assertIn("Empty list elements are not allowed", str(e.exception))