def testArtifactsDependencies(self, registry): """Check artifact dependencies work.""" registry.AddFileSource(self.test_artifacts_file) art_obj = registry.GetArtifact("TestAggregationArtifactDeps") deps = ar.GetArtifactDependencies(art_obj) self.assertCountEqual(list(deps), ["TestAggregationArtifact"]) deps = ar.GetArtifactDependencies(art_obj, recursive=True) self.assertCountEqual( list(deps), ["TestOSAgnostic", "TestCmdArtifact", "TestAggregationArtifact"]) # Test recursive loop. # Make sure we use the registry registered version of the class. source = art_obj.sources[0] backup = source.attributes["names"] try: source.attributes["names"] = ["TestAggregationArtifactDeps"] with self.assertRaises(RuntimeError) as e: ar.GetArtifactDependencies(art_obj, recursive=True) self.assertIn("artifact recursion depth", str(e.exception)) finally: source.attributes["names"] = backup # Restore old source.
def BuildArtifactDescriptors(self, artifacts_list): result = [] for artifact_val in artifacts_list: descriptor = rdf_artifacts.ArtifactDescriptor( artifact=artifact_val, dependencies=sorted( artifact_registry.GetArtifactDependencies(artifact_val)), path_dependencies=sorted( artifact_registry.GetArtifactPathDependencies(artifact_val)), error_message=artifact_val.error_message, is_custom=artifact_val.loaded_from.startswith("datastore:")) factory = parsers.ArtifactParserFactory(str(artifact_val.name)) for parser in factory.AllParsers(): parser_cls = type(parser) descriptor.processors.append( rdf_artifacts.ArtifactProcessorDescriptor.FromParser(parser_cls)) result.append(descriptor) return result
def BuildArtifactDescriptors(self, artifacts_list): result = [] for artifact_val in artifacts_list: descriptor = rdf_artifacts.ArtifactDescriptor( artifact=artifact_val, dependencies=sorted( artifact_registry.GetArtifactDependencies(artifact_val)), path_dependencies=sorted( artifact_registry.GetArtifactPathDependencies(artifact_val)), error_message=artifact_val.error_message, is_custom=artifact_val.loaded_from.startswith("datastore:")) for processor in parser.Parser.GetClassesByArtifact(artifact_val.name): descriptor.processors.append( rdf_artifacts.ArtifactProcessorDescriptor( name=processor.__name__, output_types=processor.output_types, description=processor.GetDescription())) result.append(descriptor) return result