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 js_checker | |
7 from os import path as os_path | |
8 import re | |
9 from sys import path as sys_path | |
10 import unittest | |
11 | |
12 _HERE = os_path.dirname(os_path.abspath(__file__)) | |
13 sys_path.append(os_path.join(_HERE, '..', '..', '..', 'build')) | |
14 | |
15 import find_depot_tools # pylint: disable=W0611 | |
16 from testing_support.super_mox import SuperMoxTestBase | |
17 | |
18 | |
19 class ClosureLintTest(SuperMoxTestBase): | |
20 def setUp(self): | |
21 SuperMoxTestBase.setUp(self) | |
22 | |
23 input_api = self.mox.CreateMockAnything() | |
24 input_api.os_path = os_path | |
25 input_api.re = re | |
26 | |
27 input_api.change = self.mox.CreateMockAnything() | |
28 self.mox.StubOutWithMock(input_api.change, 'RepositoryRoot') | |
29 src_root = os_path.join(os_path.dirname(__file__), '..', '..', '..') | |
30 input_api.change.RepositoryRoot().MultipleTimes().AndReturn(src_root) | |
31 | |
32 output_api = self.mox.CreateMockAnything() | |
33 | |
34 self.mox.ReplayAll() | |
35 | |
36 self.checker = js_checker.JSChecker(input_api, output_api) | |
37 | |
38 def ShouldPassClosureLint(self, source): | |
39 errors = self.checker.ClosureLint('', source=source) | |
40 | |
41 for error in errors: | |
42 print 'Error: ' + error.message | |
43 | |
44 self.assertListEqual([], errors) | |
45 | |
46 def testBindFalsePositives(self): | |
47 sources = [ | |
48 [ | |
49 'var addOne = function(prop) {\n', | |
50 ' this[prop] += 1;\n', | |
51 '}.bind(counter, timer);\n', | |
52 '\n', | |
53 'setInterval(addOne, 1000);\n', | |
54 '\n', | |
55 ], | |
56 [ | |
57 '/** Da clickz. */\n', | |
58 'button.onclick = function() { this.add_(this.total_); }.bind(this);\n', | |
59 ], | |
60 ] | |
61 for source in sources: | |
62 self.ShouldPassClosureLint(source) | |
63 | |
64 def testPromiseFalsePositives(self): | |
65 sources = [ | |
66 [ | |
67 'Promise.reject(1).catch(function(error) {\n', | |
68 ' alert(error);\n', | |
69 '});\n', | |
70 ], | |
71 [ | |
72 'var loaded = new Promise();\n', | |
73 'loaded.then(runAwesomeApp);\n', | |
74 'loaded.catch(showSadFace);\n', | |
75 '\n', | |
76 '/** Da loadz. */\n', | |
77 'document.onload = function() { loaded.resolve(); };\n', | |
78 '\n', | |
79 '/** Da errorz. */\n', | |
80 'document.onerror = function() { loaded.reject(); };\n', | |
81 '\n', | |
82 "if (document.readystate == 'complete') loaded.resolve();\n", | |
83 ], | |
84 ] | |
85 for source in sources: | |
86 self.ShouldPassClosureLint(source) | |
87 | |
88 | |
89 if __name__ == '__main__': | |
90 unittest.main() | |
OLD | NEW |