42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import logging
|
|
import re
|
|
import subprocess
|
|
from unittest import skipIf
|
|
from odoo import tools
|
|
from odoo.modules.module import get_resource_path
|
|
from odoo.tests import tagged
|
|
|
|
from . import lint_case
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
try:
|
|
eslint = tools.misc.find_in_path('eslint')
|
|
except IOError:
|
|
eslint = None
|
|
|
|
@skipIf(eslint is None, "eslint tool not found on this system")
|
|
@tagged("test_themes")
|
|
class TestESLint(lint_case.LintCase):
|
|
|
|
longMessage = True
|
|
|
|
def test_eslint(self):
|
|
""" Test that there are no eslint errors in javascript files """
|
|
|
|
files_to_check = [
|
|
p for p in self.iter_module_files('**/static/**/*.js')
|
|
if not re.match('.*/libs?/.*', p) # don't check libraries
|
|
if not re.match('.*/o_spreadsheet/o_spreadsheet.js', p) # don't check generated code
|
|
]
|
|
eslintrc_path = get_resource_path('test_lint', 'tests', 'eslintrc')
|
|
|
|
_logger.info('Testing %s js files', len(files_to_check))
|
|
# https://eslint.org/docs/user-guide/command-line-interface
|
|
cmd = [eslint, '--no-eslintrc', '-c', eslintrc_path] + files_to_check
|
|
process = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=False)
|
|
self.assertEqual(process.returncode, 0, msg=process.stdout.decode())
|