def testConfigUniverse(self): context = findings_lib.FileContext('') type_universe = entity_type_lib.EntityTypeUniverse([]) type_universe.AddFinding( findings_lib.IllegalCharacterError('stuff', context)) field_universe = field_lib.FieldUniverse([]) field_universe.AddFinding( findings_lib.InconsistentFileLocationError('', context)) subfield_universe = subfield_lib.SubfieldUniverse([]) subfield_universe.AddFinding( findings_lib.CapitalizationError('Hi', context)) state_universe = state_lib.StateUniverse([]) connection_universe = connection_lib.ConnectionUniverse([]) connection_universe.AddFinding( findings_lib.InvalidConnectionNamespaceError('notglobal', context)) unit_universe = unit_lib.UnitUniverse([]) config_universe = presubmit_validate_types_lib.ConfigUniverse( subfield_universe=subfield_universe, field_universe=field_universe, entity_type_universe=type_universe, state_universe=state_universe, connection_universe=connection_universe, unit_universe=unit_universe) findings = config_universe.GetFindings() self.assertLen(findings, 4) self.assertTrue( config_universe.HasFindingTypes([ findings_lib.InconsistentFileLocationError, findings_lib.IllegalCharacterError, findings_lib.CapitalizationError, findings_lib.InvalidConnectionNamespaceError ])) self.assertFalse(config_universe.IsValid())
def testConfigUniverseGetEntityType(self): context = findings_lib.FileContext('') type_universe = entity_type_lib.EntityTypeUniverse([]) type_universe.AddFinding( findings_lib.IllegalCharacterError('stuff', context)) field_universe = field_lib.FieldUniverse([]) field_universe.AddFinding( findings_lib.InconsistentFileLocationError('', context)) subfield_universe = subfield_lib.SubfieldUniverse([]) subfield_universe.AddFinding( findings_lib.CapitalizationError('Hi', context)) state_universe = state_lib.StateUniverse([]) connection_universe = connection_lib.ConnectionUniverse([]) unit_universe = unit_lib.UnitUniverse([]) config_universe = presubmit_validate_types_lib.ConfigUniverse( subfield_universe=subfield_universe, field_universe=field_universe, entity_type_universe=type_universe, state_universe=state_universe, connection_universe=connection_universe, unit_universe=unit_universe) entity_type = config_universe.GetEntityType('NONEXISTENT', 'NONEXISTENT') self.assertIsNone(entity_type)
def testConnectionUniverseGetFindings(self): context = findings_lib.FileContext('{0}/file.yaml'.format(_GOOD_PATH)) folder = connection_lib.ConnectionFolder(_GOOD_PATH) folder.AddFinding( findings_lib.InconsistentFileLocationError('', context)) namespace = folder.local_namespace namespace.AddFinding( findings_lib.DuplicateConnectionDefinitionError( connection_lib.Connection('FEEDS'), base_lib.GLOBAL_NAMESPACE)) connection = connection_lib.Connection('FEEDS', 'description') connection.AddFinding( findings_lib.MissingConnectionDescriptionWarning(connection)) namespace.InsertConnection(connection) connection_universe = connection_lib.ConnectionUniverse([folder]) findings = connection_universe.GetFindings() self.assertLen(findings, 3) self.assertTrue( connection_universe.HasFindingTypes([ findings_lib.InconsistentFileLocationError, findings_lib.DuplicateConnectionDefinitionError, findings_lib.MissingConnectionDescriptionWarning ])) self.assertFalse(connection_universe.IsValid())
def testConnectionUniverseConnectionIsDefined(self): folder = connection_lib.ConnectionFolder(_GOOD_PATH) namespace = folder.local_namespace namespace.InsertConnection(connection_lib.Connection('FEEDS', 'one')) connection_universe = connection_lib.ConnectionUniverse([folder]) self.assertTrue(connection_universe.IsDefined('FEEDS')) self.assertFalse(connection_universe.IsDefined('CONTAINS'))
def BuildUniverse(config): """Verifies that the ontology config is consistent and valid. Args: config: a Config namedtuple containing lists of localpaths to config files. Returns: A ConfigUniverse that is fully populated with all content specified in the config. """ # Parse state files state_universe = None if config.states: state_folders = parse.ParseStateFoldersFromFiles(config.states) state_universe = state_lib.StateUniverse(state_folders) connections_universe = None if config.connections: connection_folders = parse.ParseConnectionFoldersFromFiles( config.connections) connections_universe = connection_lib.ConnectionUniverse( connection_folders) # Parse subfield files subfields_universe = None if config.subfields: subfield_folders = parse.ParseSubfieldFoldersFromFiles( config.subfields) subfields_universe = subfield_lib.SubfieldUniverse(subfield_folders) # Parse unit files unit_universe = None if config.units: unit_folders = parse.ParseUnitFoldersFromFiles(config.units, subfields_universe) unit_universe = unit_lib.UnitUniverse(unit_folders) if subfields_universe: subfields_universe.ValidateUnits(unit_universe) # Parse fields files fields_universe = None if config.fields: field_folders = parse.ParseFieldFoldersFromFiles( config.fields, subfields_universe, state_universe) fields_universe = field_lib.FieldUniverse(field_folders) # Parse typedef files type_folders = parse.ParseTypeFoldersFromFiles(config.type_defs, fields_universe) types_universe = entity_type_lib.EntityTypeUniverse(type_folders) # return findings_list, result_namespaces return ConfigUniverse(types_universe, fields_universe, subfields_universe, state_universe, connections_universe, unit_universe)
def testConnectionUniverseGetConnectionsMap(self): folder = connection_lib.ConnectionFolder(_GOOD_PATH) namespace = folder.local_namespace namespace.InsertConnection(connection_lib.Connection('FEEDS', 'one')) namespace.InsertConnection(connection_lib.Connection( 'CONTAINS', 'two')) connection_universe = connection_lib.ConnectionUniverse([folder]) connections = connection_universe.GetConnectionsMap( base_lib.GLOBAL_NAMESPACE) self.assertIn('FEEDS', connections) self.assertIn('CONTAINS', connections)
# you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://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. """Sets up a minimal connection universe required for testing.""" from yamlformat.validator import connection_lib CONNECTION_FOLDER = connection_lib.ConnectionFolder(folderpath='connections') CONNECTION_UNIVERSE = connection_lib.ConnectionUniverse( folders=[CONNECTION_FOLDER]) CONNECTION_FOLDER.AddFromConfig(documents=[{ 'CONTAINS': { 'description': 'foobar', }, 'CONTROLS': { 'description': 'foobar', }, 'FEEDS': { 'description': 'foobar', }, 'HAS_PART': { 'description': 'foobar', }, 'HAS_RANGE': {