author | Jérémy Bobbio <jeremy.bobbio@irq7.fr> |
Wed, 19 Jun 2019 15:44:17 +0200 | |
changeset 12655 | 5b0ce10a7046 |
parent 12568 | fc45f22c8100 |
permissions | -rw-r--r-- |
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
1 |
# -*- coding: iso-8859-1 -*- |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
2 |
# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
3 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
4 |
# |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
5 |
# This file is part of CubicWeb. |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
6 |
# |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
7 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
8 |
# terms of the GNU Lesser General Public License as published by the Free |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
9 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
10 |
# any later version. |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
11 |
# |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
12 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
13 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
14 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
15 |
# details. |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
16 |
# |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
17 |
# You should have received a copy of the GNU Lesser General Public License along |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
18 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
19 |
"""unit tests for i18n messages generator""" |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
20 |
|
11735
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
21 |
from contextlib import contextmanager |
12567
26744ad37953
Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12546
diff
changeset
|
22 |
from io import StringIO |
11208
fe57dc4adfea
[test] Use a Popen in i18n tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11099
diff
changeset
|
23 |
import os |
fe57dc4adfea
[test] Use a Popen in i18n tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11099
diff
changeset
|
24 |
import os.path as osp |
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
25 |
import sys |
11208
fe57dc4adfea
[test] Use a Popen in i18n tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11099
diff
changeset
|
26 |
from subprocess import PIPE, Popen, STDOUT |
10464
5ad491852062
[test] Fix unittest_i18n to run properly with "pytest -t" (closes #5576169)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9202
diff
changeset
|
27 |
from unittest import TestCase, main |
12568
fc45f22c8100
[test] use unittest.mock instead of mock library
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12567
diff
changeset
|
28 |
from unittest.mock import patch |
11735
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
29 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
30 |
from cubicweb.devtools import devctl |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
31 |
from cubicweb.devtools.testlib import BaseTestCase |
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
32 |
|
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
33 |
DATADIR = osp.join(osp.abspath(osp.dirname(__file__)), 'data') |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
34 |
|
11208
fe57dc4adfea
[test] Use a Popen in i18n tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11099
diff
changeset
|
35 |
|
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
36 |
def load_po(fname): |
9200
1ba5961b19dd
[i18n test] load_po: fix bug in case of multi-lines msgid and ensure there are no duplicated messages
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9153
diff
changeset
|
37 |
"""load a po file and return a set of encountered (msgid, msgctx)""" |
1ba5961b19dd
[i18n test] load_po: fix bug in case of multi-lines msgid and ensure there are no duplicated messages
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9153
diff
changeset
|
38 |
msgs = set() |
1ba5961b19dd
[i18n test] load_po: fix bug in case of multi-lines msgid and ensure there are no duplicated messages
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9153
diff
changeset
|
39 |
msgid = msgctxt = None |
10964
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
40 |
with open(fname) as fobj: |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
41 |
for line in fobj: |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
42 |
if line.strip() in ('', '#'): |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
43 |
continue |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
44 |
if line.startswith('msgstr'): |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
45 |
assert not (msgid, msgctxt) in msgs |
11208
fe57dc4adfea
[test] Use a Popen in i18n tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11099
diff
changeset
|
46 |
msgs.add((msgid, msgctxt)) |
10964
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
47 |
msgid = msgctxt = None |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
48 |
elif line.startswith('msgid'): |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
49 |
msgid = line.split(' ', 1)[1][1:-1] |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
50 |
elif line.startswith('msgctx'): |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
51 |
msgctxt = line.split(' ', 1)[1][1: -1] |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
52 |
elif msgid is not None: |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
53 |
msgid += line[1:-1] |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
54 |
elif msgctxt is not None: |
bf381a894cd3
[devtools] Fix fd leak in tests
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10464
diff
changeset
|
55 |
msgctxt += line[1:-1] |
9200
1ba5961b19dd
[i18n test] load_po: fix bug in case of multi-lines msgid and ensure there are no duplicated messages
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9153
diff
changeset
|
56 |
return msgs |
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
57 |
|
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
58 |
|
12546
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
59 |
TESTCUBE_DIR = osp.join(DATADIR, 'libpython', 'cubicweb_i18ntestcube') |
11735
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
60 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
61 |
|
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
62 |
class cubePotGeneratorTC(TestCase): |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
63 |
"""test case for i18n pot file generator""" |
9200
1ba5961b19dd
[i18n test] load_po: fix bug in case of multi-lines msgid and ensure there are no duplicated messages
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
9153
diff
changeset
|
64 |
|
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
65 |
def test_i18ncube(self): |
10464
5ad491852062
[test] Fix unittest_i18n to run properly with "pytest -t" (closes #5576169)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9202
diff
changeset
|
66 |
env = os.environ.copy() |
11460
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
67 |
if 'PYTHONPATH' in env: |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
68 |
env['PYTHONPATH'] += os.pathsep |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
69 |
else: |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
70 |
env['PYTHONPATH'] = '' |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
71 |
env['PYTHONPATH'] += osp.join(DATADIR, 'libpython') |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
72 |
cubedir = osp.join(DATADIR, 'libpython', 'cubicweb_i18ntestcube') |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
73 |
self._check(cubedir, env) |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
74 |
|
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
75 |
def _check(self, cubedir, env): |
11208
fe57dc4adfea
[test] Use a Popen in i18n tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11099
diff
changeset
|
76 |
cmd = [sys.executable, '-m', 'cubicweb', 'i18ncube', 'i18ntestcube'] |
fe57dc4adfea
[test] Use a Popen in i18n tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11099
diff
changeset
|
77 |
proc = Popen(cmd, env=env, stdout=PIPE, stderr=STDOUT) |
fe57dc4adfea
[test] Use a Popen in i18n tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11099
diff
changeset
|
78 |
stdout, _ = proc.communicate() |
11460
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
79 |
msg = stdout.decode(sys.getdefaultencoding(), errors='replace') |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
80 |
self.assertEqual(proc.returncode, 0, msg=msg) |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
81 |
msgs = load_po(osp.join(cubedir, 'i18n', 'en.po.ref')) |
5be729810695
[devtools] Handle i18ncube command for "cubes as packages"
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11208
diff
changeset
|
82 |
newmsgs = load_po(osp.join(cubedir, 'i18n', 'en.po')) |
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
83 |
self.assertEqual(msgs, newmsgs) |
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
84 |
|
10464
5ad491852062
[test] Fix unittest_i18n to run properly with "pytest -t" (closes #5576169)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9202
diff
changeset
|
85 |
|
11735
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
86 |
class CustomMessageExtractor(devctl.I18nCubeMessageExtractor): |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
87 |
blacklist = devctl.I18nCubeMessageExtractor.blacklist | set(['excludeme']) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
88 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
89 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
90 |
@contextmanager |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
91 |
def capture_stdout(): |
12567
26744ad37953
Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12546
diff
changeset
|
92 |
stream = StringIO() |
11735
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
93 |
sys.stdout = stream |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
94 |
yield stream |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
95 |
stream.seek(0) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
96 |
sys.stdout = sys.__stdout__ |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
97 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
98 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
99 |
class I18nCollectorTest(BaseTestCase): |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
100 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
101 |
def test_i18ncube_py_collection(self): |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
102 |
extractor = CustomMessageExtractor(DATADIR, TESTCUBE_DIR) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
103 |
collected = extractor.collect_py() |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
104 |
expected = [osp.join(TESTCUBE_DIR, path) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
105 |
for path in ('__init__.py', '__pkginfo__.py', |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
106 |
'views.py', 'schema.py')] |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
107 |
self.assertCountEqual(expected, collected) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
108 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
109 |
def test_i18ncube_js_collection(self): |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
110 |
extractor = CustomMessageExtractor(DATADIR, TESTCUBE_DIR) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
111 |
collected = extractor.collect_js() |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
112 |
self.assertCountEqual([], collected, []) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
113 |
extractor.blacklist = () # don't ignore anything |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
114 |
collected = extractor.collect_js() |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
115 |
expected = [osp.join(TESTCUBE_DIR, 'node_modules/cubes.somefile.js')] |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
116 |
self.assertCountEqual(expected, collected) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
117 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
118 |
class FakeMessageExtractor(devctl.I18nCubeMessageExtractor): |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
119 |
"""Fake message extractor that generates no pot file.""" |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
120 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
121 |
def generate_pot_file(self): |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
122 |
return None |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
123 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
124 |
@patch('pkg_resources.load_entry_point', return_value=FakeMessageExtractor) |
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
125 |
def test_cube_custom_extractor(self, mock_load_entry_point): |
11822
adf0212d1dcc
[devctl] make i18n custom message extractors work with legacy layouts
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11735
diff
changeset
|
126 |
distname = 'cubicweb_i18ntestcube' # same for new and legacy layout |
12546
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
127 |
cubedir = osp.join(DATADIR, 'libpython', 'cubicweb_i18ntestcube') |
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
128 |
with capture_stdout() as stream: |
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
129 |
devctl.update_cube_catalogs(cubedir) |
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
130 |
self.assertIn(u'no message catalog for cube i18ntestcube', |
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
131 |
stream.read()) |
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
132 |
mock_load_entry_point.assert_called_once_with( |
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
133 |
distname, 'cubicweb.i18ncube', 'i18ntestcube') |
465ee7fb16e3
[devtools/test] drop legacy cube i18n tests
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
11822
diff
changeset
|
134 |
mock_load_entry_point.reset_mock() |
11735
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
135 |
|
7a170207acbf
[devtools] make i18ncube customizable in a cube
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
11460
diff
changeset
|
136 |
|
9153
bc1b8e77d6ce
[test/devctl] add a test case for i18ncube command
David Douard <david.douard@logilab.fr>
parents:
diff
changeset
|
137 |
if __name__ == '__main__': |
10464
5ad491852062
[test] Fix unittest_i18n to run properly with "pytest -t" (closes #5576169)
Rémi Cardona <remi.cardona@logilab.fr>
parents:
9202
diff
changeset
|
138 |
main() |