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 |