def test_generate_candidate_urls_absolute(self): dep = Dependency(FakeRepository(), "/base/repo/services/bar/interfaces/bar.mojom", "services.foo.com/foo/baz.mojom") self.assertTrue(dep.maybe_is_a_url()) candidate_urls = dep.generate_candidate_urls() self.assertEqual(["services.foo.com/foo/baz.mojom"], candidate_urls)
def test_importer_imported(self): dep = Dependency(FakeRepository(), "/base/repo/services/foo/../bar/bar.mojom", "mojo/public/./../public/baz.mojom") self.assertEqual("/base/repo/services/bar/bar.mojom", dep.get_importer()) self.assertEqual("mojo/public/baz.mojom", dep.get_imported())
def test_generate_candidate_urls_relative(self): dep = Dependency( FakeRepository(), "/base/repo/third_party/external/" + "services.bar.com/bar/interfaces/bar.mojom", "foo/baz.mojom") self.assertTrue(dep.maybe_is_a_url()) candidate_urls = dep.generate_candidate_urls() self.assertEqual(["services.bar.com/bar/interfaces/foo/baz.mojom", "services.bar.com/bar/foo/baz.mojom", "services.bar.com/foo/baz.mojom"], candidate_urls)
def get(self, dep): dependency = Dependency(self._repository, ".", dep) downloaded = self._download_dependencies([dependency]) if downloaded != 0: return self.discover() else: return -1
def update(self): dependencies = [ Dependency(self._repository, ".", f) for f in self._repository.get_external_urls() ] # TODO(etiennej): We may want to suggest to the user to delete # un-downloadable dependencies. downloaded = self._download_dependencies(dependencies) if downloaded != 0: return self.discover() else: return -1
def test_is_sdk_dep(self): # Not in SDK dep = Dependency(FakeRepository(), "/base/repo/services/bar/bar.mojom", "mojo/public/../foo/baz.mojom") self.assertFalse(dep.is_sdk_dep()) # In SDK dep = Dependency(FakeRepository(), "/base/repo/services/bar/bar.mojom", "mojo/public/baz.mojom") self.assertTrue(dep.is_sdk_dep())
def test_get_missing_dependencies(self): repository = FakeRepository("/path/to/repo", "third_party/external") missing_deps = repository.get_missing_dependencies() self.assertEquals(["/path/to/repo"], repository.directories_walked) # Order is not important self.assertIn("/path/to/repo/foo/foo.mojom", repository.files_opened) self.assertIn("/path/to/repo/foo/bar/baz.mojom", repository.files_opened) self.assertIn( "/path/to/repo/third_party/external/services.domokit.org/foo/fiz.mojom", repository.files_opened) self.assertEquals(3, len(repository.files_opened)) self.assertEquals([ Dependency( repository, "/path/to/repo/third_party/external/services.domokit.org/foo/fiz.mojom", "services.fiz.org/foo/bar.mojom") ], missing_deps)
def get_missing_dependencies(self): """get_missing_dependencies returns a set of dependencies that are required by mojoms in this repository but not available. """ # Update the list of available mojoms in this repository. mojoms = set(self._get_all_mojom_in_directory(self._root_dir)) # Find all declared dependencies needed_deps = set([]) for mojom in mojoms: with self._open(mojom) as f: source = f.read() tree = Parse(source, mojom) for dep in tree.import_list: needed_deps.add( Dependency(self, dep.filename, dep.import_filename)) missing_deps = self._resolve_dependencies(needed_deps, mojoms) return missing_deps
def test_get_search_path_for_dependency(self): # Absolute dep = Dependency(FakeRepository(), "/base/repo/services/bar/interfaces/bar.mojom", "services.foo.com/foo/baz.mojom") self.assertEqual(set(["/base/repo/services/bar/interfaces", "/base/repo", "/base/repo/third_party/external"]), dep.get_search_path_for_dependency()) # Relative dep = Dependency( FakeRepository(), "/base/repo/third_party/external/services.foo.com/bar/bar.mojom", "baz/baz.mojom") self.assertEqual(set([ "/base/repo", "/base/repo/third_party/external", "/base/repo/third_party/external/services.foo.com/bar", "/base/repo/third_party/external/services.foo.com"]), dep.get_search_path_for_dependency())
def add_dependency(self, dependency): """Declare a new dependency of this mojom.""" self.deps.append(Dependency(self._repository, self.name, dependency))
def test_maybe_is_a_url(self): # Not a URL dep = Dependency(FakeRepository(), "/base/repo/services/bar/bar.mojom", "mojo/foo/baz.mojom") self.assertFalse(dep.maybe_is_a_url()) # URL import from non-external mojom dep = Dependency(FakeRepository(), "/base/repo/services/bar/bar.mojom", "foo.bar.com/foo/baz.mojom") self.assertTrue(dep.maybe_is_a_url()) # URL import from an external mojom dep = Dependency(FakeRepository(), "/base/repo/third_party/external/" + "services.bar.com/bar/bar.mojom", "foo.bar.com/foo/baz.mojom") self.assertTrue(dep.maybe_is_a_url()) # relative import from an external mojom dep = Dependency( FakeRepository(), "/base/repo/third_party/external/services.bar.com/bar/bar.mojom", "foo/baz.mojom") self.assertTrue(dep.maybe_is_a_url()) # external mojom importing SDK dep dep = Dependency( FakeRepository(), "/base/repo/third_party/external/services.bar.com/bar/bar.mojom", "mojo/public/foo/baz.mojom") self.assertFalse(dep.maybe_is_a_url())