OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # | |
3 # Copyright 2008 The Closure Linter Authors. All Rights Reserved. | |
4 # Licensed under the Apache License, Version 2.0 (the "License"); | |
5 # you may not use this file except in compliance with the License. | |
6 # You may obtain a copy of the License at | |
7 # | |
8 # http://www.apache.org/licenses/LICENSE-2.0 | |
9 # | |
10 # Unless required by applicable law or agreed to in writing, software | |
11 # distributed under the License is distributed on an "AS-IS" BASIS, | |
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 # See the License for the specific language governing permissions and | |
14 # limitations under the License. | |
15 | |
16 """Unit tests for the runner module.""" | |
17 | |
18 __author__ = ('nnaze@google.com (Nathan Naze)') | |
19 | |
20 import StringIO | |
21 | |
22 | |
23 import mox | |
24 | |
25 | |
26 import unittest as googletest | |
27 | |
28 from closure_linter import errors | |
29 from closure_linter import runner | |
30 from closure_linter.common import error | |
31 from closure_linter.common import errorhandler | |
32 from closure_linter.common import tokens | |
33 | |
34 | |
35 class LimitedDocTest(googletest.TestCase): | |
36 | |
37 def testIsLimitedDocCheck(self): | |
38 self.assertTrue(runner._IsLimitedDocCheck('foo_test.js', ['_test.js'])) | |
39 self.assertFalse(runner._IsLimitedDocCheck('foo_bar.js', ['_test.js'])) | |
40 | |
41 self.assertTrue(runner._IsLimitedDocCheck( | |
42 'foo_moo.js', ['moo.js', 'quack.js'])) | |
43 self.assertFalse(runner._IsLimitedDocCheck( | |
44 'foo_moo.js', ['woof.js', 'quack.js'])) | |
45 | |
46 | |
47 class RunnerTest(googletest.TestCase): | |
48 | |
49 def setUp(self): | |
50 self.mox = mox.Mox() | |
51 | |
52 def testRunOnMissingFile(self): | |
53 mock_error_handler = self.mox.CreateMock(errorhandler.ErrorHandler) | |
54 | |
55 def ValidateError(err): | |
56 return (isinstance(err, error.Error) and | |
57 err.code is errors.FILE_NOT_FOUND and | |
58 err.token is None) | |
59 | |
60 mock_error_handler.HandleFile('does_not_exist.js', None) | |
61 mock_error_handler.HandleError(mox.Func(ValidateError)) | |
62 mock_error_handler.FinishFile() | |
63 | |
64 self.mox.ReplayAll() | |
65 | |
66 runner.Run('does_not_exist.js', mock_error_handler) | |
67 | |
68 self.mox.VerifyAll() | |
69 | |
70 def testBadTokenization(self): | |
71 mock_error_handler = self.mox.CreateMock(errorhandler.ErrorHandler) | |
72 | |
73 def ValidateError(err): | |
74 return (isinstance(err, error.Error) and | |
75 err.code is errors.FILE_IN_BLOCK and | |
76 err.token.string == '}') | |
77 | |
78 mock_error_handler.HandleFile('foo.js', mox.IsA(tokens.Token)) | |
79 mock_error_handler.HandleError(mox.Func(ValidateError)) | |
80 mock_error_handler.HandleError(mox.IsA(error.Error)) | |
81 mock_error_handler.FinishFile() | |
82 | |
83 self.mox.ReplayAll() | |
84 | |
85 source = StringIO.StringIO(_BAD_TOKENIZATION_SCRIPT) | |
86 runner.Run('foo.js', mock_error_handler, source) | |
87 | |
88 self.mox.VerifyAll() | |
89 | |
90 | |
91 _BAD_TOKENIZATION_SCRIPT = """ | |
92 function foo () { | |
93 var a = 3; | |
94 var b = 2; | |
95 return b + a; /* Comment not closed | |
96 } | |
97 """ | |
98 | |
99 | |
100 if __name__ == '__main__': | |
101 googletest.main() | |
OLD | NEW |