author | Denis Laxalde <denis.laxalde@logilab.fr> |
Tue, 07 Jun 2016 18:21:13 +0200 | |
changeset 11459 | 8987a05950dc |
parent 11452 | 628dd5832495 |
child 11476 | a9f26de5ea6c |
permissions | -rw-r--r-- |
9740
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
1 |
# copyright 2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
3 |
# |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
4 |
# This file is part of CubicWeb. |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
5 |
# |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
9 |
# any later version. |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
10 |
# |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
14 |
# details. |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
15 |
# |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
18 |
|
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
19 |
|
11452
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
20 |
import tempfile |
11451
ae58ba20418c
[test] Use plain unittest in unittest_toolsutils
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
21 |
import unittest |
9740
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
22 |
|
11452
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
23 |
from cubicweb.toolsutils import RQLExecuteMatcher, read_config |
9740
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
24 |
|
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
25 |
|
11451
ae58ba20418c
[test] Use plain unittest in unittest_toolsutils
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
26 |
class RQLExecuteMatcherTests(unittest.TestCase): |
9740
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
27 |
def matched_query(self, text): |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
28 |
match = RQLExecuteMatcher.match(text) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
29 |
if match is None: |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
30 |
return None |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
31 |
return match['rql_query'] |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
32 |
|
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
33 |
def test_unknown_function_dont_match(self): |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
34 |
self.assertIsNone(self.matched_query('foo')) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
35 |
self.assertIsNone(self.matched_query('rql(')) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
36 |
self.assertIsNone(self.matched_query('hell("")')) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
37 |
self.assertIsNone(self.matched_query('eval("rql(\'bla\'')) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
38 |
|
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
39 |
def test_rql_other_parameters_dont_match(self): |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
40 |
self.assertIsNone(self.matched_query('rql("Any X WHERE X eid %(x)s")')) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
41 |
self.assertIsNone(self.matched_query('rql("Any X WHERE X eid %(x)s", {')) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
42 |
self.assertIsNone(self.matched_query('session.execute("Any X WHERE X eid %(x)s")')) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
43 |
self.assertIsNone(self.matched_query('session.execute("Any X WHERE X eid %(x)s", {')) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
44 |
|
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
45 |
def test_rql_function_match(self): |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
46 |
for func_expr in ('rql', 'session.execute'): |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
47 |
query = self.matched_query('%s("Any X WHERE X is ' % func_expr) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
48 |
self.assertEqual(query, 'Any X WHERE X is ') |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
49 |
|
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
50 |
def test_offseted_rql_function_match(self): |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
51 |
"""check indentation is allowed""" |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
52 |
for func_expr in (' rql', ' session.execute'): |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
53 |
query = self.matched_query('%s("Any X WHERE X is ' % func_expr) |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
54 |
self.assertEqual(query, 'Any X WHERE X is ') |
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
55 |
|
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
56 |
|
11452
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
57 |
SOURCES_CONTENT = b""" |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
58 |
[admin] |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
59 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
60 |
# cubicweb manager account's login (this user will be created) |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
61 |
login=admin |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
62 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
63 |
# cubicweb manager account's password |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
64 |
password=admin |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
65 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
66 |
[system] |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
67 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
68 |
# database driver (postgres, sqlite, sqlserver2005) |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
69 |
db-driver=postgres |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
70 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
71 |
# database host |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
72 |
db-host= |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
73 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
74 |
# database port |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
75 |
db-port= |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
76 |
""" |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
77 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
78 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
79 |
class ToolsUtilsTC(unittest.TestCase): |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
80 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
81 |
def test_read_config(self): |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
82 |
with tempfile.NamedTemporaryFile() as f: |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
83 |
f.write(SOURCES_CONTENT) |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
84 |
f.seek(0) |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
85 |
config = read_config(f.name) |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
86 |
expected = { |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
87 |
'admin': { |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
88 |
'password': 'admin', |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
89 |
'login': 'admin', |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
90 |
}, |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
91 |
'system': { |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
92 |
'db-port': None, |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
93 |
'db-driver': 'postgres', |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
94 |
'db-host': None, |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
95 |
}, |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
96 |
} |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
97 |
self.assertEqual(config, expected) |
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
98 |
|
628dd5832495
[test] Add a test for toolsutils.read_config
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11451
diff
changeset
|
99 |
|
9740
c0239d8ae742
[shell] provide autocompletion for rql queries in cubicweb-ctl shell (closes #3560541)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff
changeset
|
100 |
if __name__ == '__main__': |
11451
ae58ba20418c
[test] Use plain unittest in unittest_toolsutils
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
101 |
unittest.main() |