summaryrefslogtreecommitdiff
path: root/addons/web/tests
diff options
context:
space:
mode:
authorManuel Vázquez Acosta <mvaled@users.noreply.github.com>2018-04-26 03:14:29 -0400
committerged-odoo <ged@odoo.com>2018-04-26 09:14:29 +0200
commit33704bc7172ca602128767756fa49e09684a06fc (patch)
treebed63b715292afb1eddf3a0393bdbb7720fb77b7 /addons/web/tests
parent1a80fc1ee7365059bb8ea5230e1f13360912e2b6 (diff)
[FIX] web: Explicitly decode the JS files in tests.
When in Python 3, then function `open` defaults to open the file in text mode with and the encoding (if not passed) is taken from `locale.getpreferredencoding`. Using `getpreferredencoding` is not necessarily a good practice. Because files might no be encoded that way. When testing Odoo not in runbot (which has LANG set to C.UTF-8) you may get: Traceback (most recent call last): File "/home/gitlab-runner/src/odoo11/addons/web/tests/test_js.py", line 24, in test_check_suite self._check_only_call('web.qunit_suite') File "/home/gitlab-runner/src/odoo11/addons/web/tests/test_js.py", line 37, in _check_only_call if RE_ONLY.search(fp.read()): File "/home/gitlab-runner/virtualenvs/odoo11-MlnlRiTaP2/lib/python3.5/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 4757: ordinal not in range(128) The proposed solution is to read the file in binary mode, and decode to unicode/str ourselves using utf-8. We don't use the encoding argument of `open`, so that the code works in both Python 3 and Python 2. PR #24434
Diffstat (limited to 'addons/web/tests')
-rw-r--r--addons/web/tests/test_js.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/addons/web/tests/test_js.py b/addons/web/tests/test_js.py
index ab0eefb360b..81927bb49c5 100644
--- a/addons/web/tests/test_js.py
+++ b/addons/web/tests/test_js.py
@@ -33,6 +33,6 @@ class WebSuite(odoo.tests.HttpCase):
filename = asset['filename']
if not filename or asset['atype'] != 'text/javascript':
continue
- with open(filename, 'r') as fp:
- if RE_ONLY.search(fp.read()):
+ with open(filename, 'rb') as fp:
+ if RE_ONLY.search(fp.read().decode('utf-8')):
self.fail("`QUnit.only()` used in file %r" % asset['url'])