123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/usr/bin/env python3
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- from . import js_checker
- import json
- import os
- import sys
- import unittest
- import tempfile
- _HERE_PATH = os.path.dirname(__file__)
- sys.path.append(os.path.join(_HERE_PATH, '..', '..'))
- from PRESUBMIT_test_mocks import MockInputApi, MockOutputApi, MockFile
- class JsCheckerEsLintTest(unittest.TestCase):
- def setUp(self):
- self._tmp_files = []
- def tearDown(self):
- for file in self._tmp_files:
- os.remove(file)
- def _runChecks(self, file_contents, file_type):
- tmp_args = {'suffix': '.' + file_type, 'dir': _HERE_PATH, 'delete': False}
- with tempfile.NamedTemporaryFile(**tmp_args) as f:
- tmp_file = f.name
- self._tmp_files.append(tmp_file)
- f.write(file_contents.encode('utf-8'))
- input_api = MockInputApi()
- input_api.files = [MockFile(os.path.abspath(tmp_file), '')]
- input_api.presubmit_local_path = _HERE_PATH
- checker = js_checker.JSChecker(input_api, MockOutputApi())
- output = checker.RunEsLintChecks(input_api.AffectedFiles(),
- format='json')[0]
- # Extract ESLint's error from the PresubmitError. This is added in
- # third_party/node/node.py.
- search_token = '\' failed\n'
- json_start_index = output.message.index(search_token)
- json_error_str = output.message[json_start_index + len(search_token):]
- # ESLint's errors are in JSON format.
- return json.loads(json_error_str)[0].get('messages')
- def _assertError(self, results, rule_id, line):
- self.assertEqual(1, len(results))
- message = results[0]
- self.assertEqual(rule_id, message.get('ruleId'))
- self.assertEqual(line, message.get('line'))
- def testPrimitiveWrappersCheck(self):
- results = self._runChecks('const a = new Number(1);', 'js')
- self._assertError(results, 'no-new-wrappers', 1)
- results = self._runChecks(
- '''
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- const a: number = new Number(1);
- ''', 'ts')
- self._assertError(results, 'no-new-wrappers', 3)
- def testTypeScriptEslintPluginCheck(self):
- results = self._runChecks('const a: number = 1;', 'ts')
- self._assertError(results, '@typescript-eslint/no-unused-vars', 1)
- if __name__ == '__main__':
- unittest.main()
|