示例#1
0
    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))
示例#3
0
 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)
示例#5
0
 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")
示例#8
0
 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))
示例#9
0
 def test_alt_description(self):
     """ Check alt descriptions """
     YAMLGenerator(
         env.input_path('issue_326.yaml')).serialize(validateonly=True)
示例#10
0
 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))