Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import json | 6 import json |
| 7 import os | 7 import os |
| 8 import sys | 8 import sys |
| 9 import unittest | 9 import unittest |
| 10 | 10 |
| 11 from file_system import FileNotFoundError | 11 from file_system import FileNotFoundError |
| 12 from reference_resolver import ReferenceResolver | 12 from reference_resolver import ReferenceResolver |
| 13 from test_object_store import TestObjectStore | 13 from test_object_store import TestObjectStore |
| 14 | 14 |
| 15 | |
| 16 class FakeAPIDataSource(object): | 15 class FakeAPIDataSource(object): |
| 17 def __init__(self, json_data): | 16 def __init__(self, json_data): |
| 18 self._json = json_data | 17 self._json = json_data |
| 19 | 18 |
| 20 def get(self, key, disable_refs=False): | 19 def get(self, key, disable_refs=False): |
| 21 assert disable_refs, 'ReferenceResolve should be disabling refs' | 20 assert disable_refs, 'ReferenceResolve should be disabling refs' |
| 22 if key not in self._json: | 21 if key not in self._json: |
| 23 raise FileNotFoundError(key) | 22 raise FileNotFoundError(key) |
| 24 return self._json[key] | 23 return self._json[key] |
| 25 | 24 |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 139 resolver.GetLink('falafel.faf', namespace='a')) | 138 resolver.GetLink('falafel.faf', namespace='a')) |
| 140 self.assertEqual( | 139 self.assertEqual( |
| 141 None, | 140 None, |
| 142 resolver.GetLink('bar_p3', namespace='foo')) | 141 resolver.GetLink('bar_p3', namespace='foo')) |
| 143 self.assertEqual( | 142 self.assertEqual( |
| 144 'Hello <a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>, ' | 143 'Hello <a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>, ' |
| 145 '<a href="bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' | 144 '<a href="bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' |
| 146 '<a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>', | 145 '<a href="bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>', |
| 147 resolver.ResolveAllLinks( | 146 resolver.ResolveAllLinks( |
| 148 'Hello $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', | 147 'Hello $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', |
| 148 None, | |
| 149 namespace='bar.bon')) | 149 namespace='bar.bon')) |
| 150 self.assertEqual( | 150 self.assertEqual( |
| 151 'I like <a href="bar.html#property-bar_t1-bar_t1_p1">food</a>.', | 151 'I like <a href="bar.html#property-bar_t1-bar_t1_p1">food</a>.', |
| 152 resolver.ResolveAllLinks('I like $ref:[bar.bar_p3.bar_t1_p1 food].', | 152 resolver.ResolveAllLinks('I like $ref:[bar.bar_p3.bar_t1_p1 food].', |
| 153 None, | |
| 153 namespace='foo')) | 154 namespace='foo')) |
| 154 self.assertEqual( | 155 self.assertEqual( |
| 155 'Ref <a href="foo.html">It\'s foo!</a>', | 156 'Ref <a href="foo.html">It\'s foo!</a>', |
| 156 resolver.ResolveAllLinks('Ref $ref:[foo It\'s foo!]', namespace='bar')) | 157 resolver.ResolveAllLinks('Ref $ref:[foo It\'s foo!]', None, namespace='b ar')) |
| 157 self.assertEqual( | 158 self.assertEqual( |
| 158 'Ref <a href="bar.html#type-bon">Bon</a>', | 159 'Ref <a href="bar.html#type-bon">Bon</a>', |
| 159 resolver.ResolveAllLinks('Ref $ref:[bar.bon Bon]', namespace='bar')) | 160 resolver.ResolveAllLinks('Ref $ref:[bar.bon Bon]', None, namespace='bar' )) |
| 160 | 161 |
| 161 # Different kinds of whitespace can be significant inside <pre> tags. | 162 # Different kinds of whitespace can be significant inside <pre> tags. |
| 162 self.assertEqual( | 163 self.assertEqual( |
| 163 '<pre><a href="bar.html#type-bon">bar.bon</a>({\nkey: value})', | 164 '<pre><a href="bar.html#type-bon">bar.bon</a>({\nkey: value})', |
| 164 resolver.ResolveAllLinks('<pre>$ref:[bar.bon]({\nkey: value})', | 165 resolver.ResolveAllLinks('<pre>$ref:[bar.bon]({\nkey: value})', |
| 166 None, | |
| 165 namespace='baz')) | 167 namespace='baz')) |
| 166 | 168 |
| 167 # Allow bare "$ref:foo.bar." at the end of a string. | 169 # Allow bare "$ref:foo.bar." at the end of a string. |
| 168 self.assertEqual( | 170 self.assertEqual( |
| 169 '<a href="bar.html#type-bon">bar.bon</a>.', | 171 '<a href="bar.html#type-bon">bar.bon</a>.', |
| 170 resolver.ResolveAllLinks('$ref:bar.bon.', | 172 resolver.ResolveAllLinks('$ref:bar.bon.', |
| 173 None, | |
|
not at google - send to devlin
2013/11/21 05:26:50
if the request/path/prefix whatever is optional th
benwells
2013/11/22 05:44:01
Done.
| |
| 171 namespace='baz')) | 174 namespace='baz')) |
| 175 | |
| 176 # If a request is provided it should construct an approapriate relative link . | |
|
not at google - send to devlin
2013/11/21 05:26:50
appropriate
benwells
2013/11/22 05:44:01
Done.
| |
| 177 class FakeRequest(object): | |
| 178 pass | |
| 179 request = FakeRequest() | |
|
not at google - send to devlin
2013/11/21 05:26:50
use https://code.google.com/p/chromium/codesearch#
benwells
2013/11/22 05:44:01
Done.
| |
| 180 request.path = 'foo/big/long/path/bar.html' | |
| 181 self.assertEqual( | |
| 182 'Hello <a href="../../../bar.bon.html#property-bar_bon_p3">bar_bon_p3</a >, ' | |
| 183 '<a href="../../../bar.bon.html#property-bar_bon_p3">Bon Bon</a>, ' | |
| 184 '<a href="../../../bar.bon.html#property-bar_bon_p3">bar_bon_p3</a>' , | |
|
not at google - send to devlin
2013/11/21 05:26:50
keep < 80 chars
benwells
2013/11/22 05:44:01
Done.
| |
| 185 resolver.ResolveAllLinks( | |
| 186 'Hello $ref:bar_bon_p3, $ref:[bar_bon_p3 Bon Bon], $ref:bar_bon_p3', | |
| 187 request, | |
| 188 namespace='bar.bon')) | |
| 172 | 189 |
| 173 if __name__ == '__main__': | 190 if __name__ == '__main__': |
| 174 unittest.main() | 191 unittest.main() |
| OLD | NEW |