-
Notifications
You must be signed in to change notification settings - Fork 24.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[IMP] test_lint: add a test to detect git conflict markers
Since the deployement of the forward-port bot, chances to merge code with conflict markers has greatly increased. With this commit, a new test is added to grep for those markers in most common code files. closes #39813 Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
- Loading branch information
Showing
2 changed files
with
39 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
from . import test_pylint | ||
from . import test_ecmascript | ||
from . import test_markers |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# -*- coding: utf-8 -*- | ||
# Part of Odoo. See LICENSE file for full copyright and licensing details. | ||
|
||
import logging | ||
import os | ||
import odoo | ||
from odoo.tests.common import TransactionCase | ||
from odoo.modules.module import ad_paths | ||
|
||
_logger = logging.getLogger(__name__) | ||
MARKERS = [b'<' * 7, b'>' * 7] | ||
EXTENSIONS = ('.py', '.js', '.xml', '.less', '.sass') | ||
|
||
|
||
class TestConflictMarkers(TransactionCase): | ||
|
||
def check_file(self, fullpath_name): | ||
|
||
with open(fullpath_name, 'rb') as f: | ||
content = f.read() | ||
self.assertFalse(any([m in content for m in MARKERS]), 'Conflict markers found in %s' % fullpath_name) | ||
|
||
def test_conflict_markers(self): | ||
""" Test that there are no conflict markers left in Odoo files """ | ||
|
||
counter = 0 | ||
|
||
odoo_path = os.path.dirname(odoo.__file__) | ||
paths = ad_paths + [odoo_path] | ||
paths.remove(os.path.join(odoo_path, 'addons')) # avoid checking odoo/addons twice | ||
|
||
for p in paths: | ||
for dp, _, file_names in os.walk(p): | ||
for fn in file_names: | ||
if fn.endswith(EXTENSIONS): | ||
self.check_file(os.path.join(dp, fn)) | ||
counter += 1 | ||
_logger.info('%s files tested', counter) |