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, '..', '..', '..', 'tools')) |
| 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 |