| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright 2015 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 import io | |
| 7 import os | |
| 8 import sys | |
| 9 import unittest | |
| 10 | |
| 11 sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), | |
| 12 "..", "..", "..", "public", "tools", | |
| 13 "mojom_fetcher")) | |
| 14 sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), | |
| 15 "..", "..", "..", "public", "tools", | |
| 16 "mojom_fetcher", "pylib")) | |
| 17 sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), | |
| 18 "..", "..", "..", "public", "tools", | |
| 19 "bindings", "pylib")) | |
| 20 | |
| 21 from mojom_fetcher import UrlRewriter, UrlRewriterException, MojomFetcher | |
| 22 | |
| 23 # Fake repository for testing | |
| 24 from fakes import FakeRepository | |
| 25 | |
| 26 | |
| 27 class TestUrlRewriter(unittest.TestCase): | |
| 28 def test_no_transitive(self): | |
| 29 rules = {"foo.com": "bar.com/foo", "bar.com": "baz.com"} | |
| 30 try: | |
| 31 UrlRewriter(rules) | |
| 32 self.fail() | |
| 33 except UrlRewriterException: | |
| 34 # This is expected | |
| 35 pass | |
| 36 | |
| 37 def test_rewrite(self): | |
| 38 rules = {"foo.com": "bar.com/foo", "baz.com": "bar.com/baz"} | |
| 39 rewriter = UrlRewriter(rules) | |
| 40 self.assertEquals("bar.com/foo/foo_file", | |
| 41 rewriter.rewrite("foo.com/foo_file")) | |
| 42 self.assertEquals("bar.com/baz/foo_file", | |
| 43 rewriter.rewrite("baz.com/foo_file")) | |
| 44 self.assertEquals("example.com/file", | |
| 45 rewriter.rewrite("example.com/file")) | |
| 46 | |
| 47 | |
| 48 class FakeRequest(object): | |
| 49 def __init__(self, content, ok): | |
| 50 self.content = content | |
| 51 self.ok = ok | |
| 52 | |
| 53 | |
| 54 class FakeMojomFetcher(MojomFetcher): | |
| 55 data = """module test; | |
| 56 interface Fiz {};""" | |
| 57 | |
| 58 def __init__(self, repository, rewriter): | |
| 59 self.count = 1 | |
| 60 self.opened_files = {} | |
| 61 self.downloaded_urls = [] | |
| 62 MojomFetcher.__init__(self, repository, rewriter) | |
| 63 | |
| 64 def _requests_get(self, url): | |
| 65 self.downloaded_urls.append(url) | |
| 66 return FakeRequest(self.data, True) | |
| 67 | |
| 68 def _os_makedirs(self, _): | |
| 69 return | |
| 70 | |
| 71 def _open(self, f, _): | |
| 72 fake_file = io.BytesIO() | |
| 73 self.opened_files[f] = fake_file | |
| 74 if "services.fiz.org/foo/bar.mojom" in f: | |
| 75 self._repository.all_files_available = True | |
| 76 return fake_file | |
| 77 | |
| 78 | |
| 79 class TestMojomFetcher(unittest.TestCase): | |
| 80 def setUp(self): | |
| 81 self.rules = {"foo.com": "bar.com/foo", "baz.com": "bar.com/baz"} | |
| 82 self.rewriter = UrlRewriter(self.rules) | |
| 83 self.repository = FakeRepository("/path/to/repo", "third_party/external") | |
| 84 self.fetcher = FakeMojomFetcher(self.repository, self.rewriter) | |
| 85 | |
| 86 def test_get(self): | |
| 87 self.fetcher.get("foo.com/bar.mojom") | |
| 88 self.assertEquals(["https://bar.com/foo/bar.mojom", | |
| 89 "https://services.fiz.org/foo/bar.mojom"], | |
| 90 self.fetcher.downloaded_urls) | |
| 91 | |
| 92 def test_update(self): | |
| 93 self.fetcher.update() | |
| 94 self.assertEquals(["https://services.domokit.org/foo/fiz.mojom", | |
| 95 "https://services.fiz.org/foo/bar.mojom"], | |
| 96 self.fetcher.downloaded_urls) | |
| 97 | |
| 98 def test_discover(self): | |
| 99 self.fetcher.update() | |
| 100 self.assertEquals(["https://services.domokit.org/foo/fiz.mojom", | |
| 101 "https://services.fiz.org/foo/bar.mojom"], | |
| 102 self.fetcher.downloaded_urls) | |
| 103 | |
| 104 if __name__ == '__main__': | |
| 105 loader = unittest.defaultTestLoader | |
| 106 runner = unittest.TextTestRunner() | |
| 107 directory = os.path.dirname(os.path.abspath(__file__)) | |
| 108 suite = loader.discover(directory, '*_tests.py') | |
| 109 runner.run(suite) | |
| OLD | NEW |