You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.4 KiB
Python

8 months ago
# -*- 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())