Exemple #1
0
 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)
Exemple #2
0
  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())
Exemple #3
0
 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)
Exemple #4
0
 def get(self, dep):
     dependency = Dependency(self._repository, ".", dep)
     downloaded = self._download_dependencies([dependency])
     if downloaded != 0:
         return self.discover()
     else:
         return -1
Exemple #5
0
 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
Exemple #6
0
  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)
Exemple #8
0
    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
Exemple #9
0
  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())
Exemple #10
0
 def add_dependency(self, dependency):
     """Declare a new dependency of this mojom."""
     self.deps.append(Dependency(self._repository, self.name, dependency))
Exemple #11
0
  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())