author | Laurent Peuch <cortex@worlddomination.be> |
Mon, 22 Jul 2019 11:21:10 +0200 | |
changeset 12696 | eb83daa69495 |
parent 12695 | 38dfd90c335a |
child 12735 | 17d1b1f4eddd |
permissions | -rw-r--r-- |
9639
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
1 |
# copyright 2003-2014 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
3 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
4 |
# This file is part of CubicWeb. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
5 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
9 |
# any later version. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
10 |
# |
5424
8ecbcbff9777
replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5421
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
14 |
# details. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
15 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4212
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
0 | 18 |
import sys |
19 |
import os |
|
6631
26c303c3f1aa
[test] make test independant from the working directory
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6197
diff
changeset
|
20 |
from os.path import join |
12567
26744ad37953
Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12121
diff
changeset
|
21 |
from io import StringIO |
11469
e0538fee4caa
[test] Use plain unittest in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
22 |
import unittest |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
23 |
from unittest.mock import patch, MagicMock |
12120
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
24 |
|
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
25 |
from logilab.common.clcommands import CommandLine |
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
26 |
|
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
27 |
from cubicweb import cwctl |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
28 |
from cubicweb.cwctl import ListCommand, InstanceCommand |
5430
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
29 |
from cubicweb.devtools.testlib import CubicWebTC |
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
30 |
from cubicweb.server.migractions import ServerMigrationHelper |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
31 |
from cubicweb.cwconfig import CubicWebConfiguration as cwcfg |
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
32 |
from cubicweb.__pkginfo__ import version as cw_version |
5430
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
33 |
|
12120
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
34 |
import unittest_cwconfig |
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
35 |
|
5430
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
36 |
|
11469
e0538fee4caa
[test] Use plain unittest in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
37 |
class CubicWebCtlTC(unittest.TestCase): |
12120
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
38 |
setUpClass = unittest_cwconfig.CubicWebConfigurationTC.setUpClass |
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
39 |
tearDownClass = unittest_cwconfig.CubicWebConfigurationTC.tearDownClass |
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
40 |
|
0 | 41 |
def setUp(self): |
12567
26744ad37953
Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12121
diff
changeset
|
42 |
self.stream = StringIO() |
0 | 43 |
sys.stdout = self.stream |
11469
e0538fee4caa
[test] Use plain unittest in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
44 |
|
0 | 45 |
def tearDown(self): |
46 |
sys.stdout = sys.__stdout__ |
|
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
0
diff
changeset
|
47 |
|
12120
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
48 |
@patch('pkg_resources.iter_entry_points', side_effect=unittest_cwconfig.iter_entry_points) |
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
49 |
def test_list(self, mock_iter_entry_points): |
6197
d8f0dce0b86d
[test] fixes to follow recent changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5436
diff
changeset
|
50 |
ListCommand(None).run([]) |
12120
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
51 |
self.assertNotIn('cubicweb_', self.stream.getvalue()) |
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
52 |
mock_iter_entry_points.assert_called_once_with( |
707139a9eb00
[cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12053
diff
changeset
|
53 |
group='cubicweb.cubes', name=None) |
1802
d628defebc17
delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
0
diff
changeset
|
54 |
|
12053
c3c9f2e1424c
[pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12020
diff
changeset
|
55 |
def test_list_configurations(self): |
c3c9f2e1424c
[pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12020
diff
changeset
|
56 |
ListCommand(None).run(['configurations']) |
c3c9f2e1424c
[pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12020
diff
changeset
|
57 |
configs = [l[2:].strip() for l in self.stream.getvalue().splitlines() |
c3c9f2e1424c
[pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12020
diff
changeset
|
58 |
if l.startswith('* ')] |
c3c9f2e1424c
[pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12020
diff
changeset
|
59 |
self.assertIn('all-in-one', configs) |
c3c9f2e1424c
[pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12020
diff
changeset
|
60 |
self.assertIn('pyramid', configs) |
c3c9f2e1424c
[pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12020
diff
changeset
|
61 |
|
5430
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
62 |
|
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
63 |
class CubicWebShellTC(CubicWebTC): |
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
64 |
|
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
65 |
def test_process_script_args_context(self): |
9639
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
66 |
repo = self.repo |
10353
d9a1e7939ee6
[migractions] remove any session related leftovers
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
9639
diff
changeset
|
67 |
with self.admin_access.repo_cnx() as cnx: |
9639
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
68 |
mih = ServerMigrationHelper(None, repo=repo, cnx=cnx, |
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
69 |
interactive=False, |
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
70 |
# hack so it don't try to load fs schema |
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
71 |
schema=1) |
12121
86ec847835cd
Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12120
diff
changeset
|
72 |
scripts = { |
86ec847835cd
Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12120
diff
changeset
|
73 |
'script1.py': list(), |
86ec847835cd
Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12120
diff
changeset
|
74 |
'script2.py': ['-v'], |
86ec847835cd
Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12120
diff
changeset
|
75 |
'script3.py': ['-vd', '-f', 'FILE.TXT'], |
86ec847835cd
Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
12120
diff
changeset
|
76 |
} |
9639
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
77 |
mih.cmd_process_script(join(self.datadir, 'scripts', 'script1.py'), |
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
78 |
funcname=None) |
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
79 |
for script, args in scripts.items(): |
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
80 |
scriptname = os.path.join(self.datadir, 'scripts', script) |
10600
180aa08cad48
[tests] Replace use of deprecated TestCase.assert_
Rémi Cardona <remi.cardona@logilab.fr>
parents:
10353
diff
changeset
|
81 |
self.assertTrue(os.path.exists(scriptname)) |
9639
74b3db5bb41d
[test] silence warnings for unittest_cwctl by upgrading to new 3.19 API
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
82 |
mih.cmd_process_script(scriptname, None, scriptargs=args) |
5430
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
83 |
|
ed8f71e244f8
[shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
5426
diff
changeset
|
84 |
|
12691
3f0e64630d94
[test] Rename TestCommand to avoid PytestCollectionWarning
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12685
diff
changeset
|
85 |
class _TestCommand(InstanceCommand): |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
86 |
"I need some doc" |
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
87 |
name = "test" |
12695
38dfd90c335a
[test] Add an "actionverb" attribute to test commands
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12694
diff
changeset
|
88 |
actionverb = 'failtested' |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
89 |
|
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
90 |
def test_instance(self, appid): |
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
91 |
pass |
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
92 |
|
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
93 |
|
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
94 |
class _TestFailCommand(InstanceCommand): |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
95 |
"I need some doc" |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
96 |
name = "test_fail" |
12695
38dfd90c335a
[test] Add an "actionverb" attribute to test commands
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12694
diff
changeset
|
97 |
actionverb = 'tested' |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
98 |
|
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
99 |
def test_fail_instance(self, appid): |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
100 |
raise Exception() |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
101 |
|
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
102 |
|
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
103 |
class InstanceCommandTest(unittest.TestCase): |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
104 |
def setUp(self): |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
105 |
self.CWCTL = CommandLine('cubicweb-ctl', 'The CubicWeb swiss-knife.', |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
106 |
version=cw_version, check_duplicated_command=False) |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
107 |
cwcfg.load_cwctl_plugins() |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
108 |
self.CWCTL.register(_TestCommand) |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
109 |
self.CWCTL.register(_TestFailCommand) |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
110 |
|
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
111 |
# pretend that this instance exists |
12693
5e7212209ea6
[test] ensure mocking is stopped in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12692
diff
changeset
|
112 |
patcher = patch.object(cwcfg, 'config_for', return_value=object()) |
5e7212209ea6
[test] ensure mocking is stopped in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12692
diff
changeset
|
113 |
patcher.start() |
5e7212209ea6
[test] ensure mocking is stopped in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12692
diff
changeset
|
114 |
self.addCleanup(patcher.stop) |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
115 |
|
12693
5e7212209ea6
[test] ensure mocking is stopped in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12692
diff
changeset
|
116 |
@patch.object(_TestCommand, 'test_instance', return_value=0) |
5e7212209ea6
[test] ensure mocking is stopped in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12692
diff
changeset
|
117 |
def test_getting_called(self, test_instance): |
12694
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
118 |
with self.assertRaises(SystemExit) as cm: |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
119 |
self.CWCTL.run(["test", "some_instance"]) |
12694
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
120 |
self.assertEqual(cm.exception.code, 0) |
12693
5e7212209ea6
[test] ensure mocking is stopped in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12692
diff
changeset
|
121 |
test_instance.assert_called_with("some_instance") |
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
122 |
|
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
123 |
@patch.object(cwctl, 'get_pdb') |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
124 |
def test_pdb_not_called(self, get_pdb): |
12694
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
125 |
# CWCTL will finish the program after that |
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
126 |
with self.assertRaises(SystemExit) as cm: |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
127 |
self.CWCTL.run(["test", "some_instance"]) |
12694
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
128 |
self.assertEqual(cm.exception.code, 0) |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
129 |
|
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
130 |
get_pdb.assert_not_called() |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
131 |
|
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
132 |
@patch.object(cwctl, 'get_pdb') |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
133 |
def test_pdb_called(self, get_pdb): |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
134 |
post_mortem = get_pdb.return_value.post_mortem |
12694
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
135 |
with self.assertRaises(SystemExit) as cm: |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
136 |
self.CWCTL.run(["test_fail", "some_instance", "--pdb"]) |
12694
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
137 |
self.assertEqual(cm.exception.code, 8) |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
138 |
|
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
139 |
get_pdb.assert_called_once() |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
140 |
post_mortem.assert_called_once() |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
141 |
|
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
142 |
@patch.dict(sys.modules, ipdb=MagicMock()) |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
143 |
def test_ipdb_selected_and_called(self): |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
144 |
ipdb = sys.modules['ipdb'] |
12694
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
145 |
with self.assertRaises(SystemExit) as cm: |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
146 |
self.CWCTL.run(["test_fail", "some_instance", "--pdb"]) |
12694
58f132392cba
[test] use self.assertRaises() in cwctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
12693
diff
changeset
|
147 |
self.assertEqual(cm.exception.code, 8) |
12692
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
148 |
|
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
149 |
ipdb.post_mortem.assert_called_once() |
8673da7c2f85
[cubicweb-ctl] add '--pdb' global option to launch (i)pdb on exception
Laurent Peuch <cortex@worlddomination.be>
parents:
12691
diff
changeset
|
150 |
|
12696
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
151 |
@patch.object(_TestFailCommand, 'test_fail_instance', side_effect=SystemExit(42)) |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
152 |
def test_respect_return_error_code(self, test_fail_instance): |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
153 |
with self.assertRaises(SystemExit) as cm: |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
154 |
self.CWCTL.run(["test_fail", "some_instance"]) |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
155 |
self.assertEqual(cm.exception.code, 42) |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
156 |
|
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
157 |
test_fail_instance.assert_called_once() |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
158 |
|
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
159 |
@patch.object(_TestFailCommand, 'test_fail_instance', side_effect=KeyboardInterrupt) |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
160 |
def test_error_code_keyboardinterupt_2(self, test_fail_instance): |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
161 |
with self.assertRaises(SystemExit) as cm: |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
162 |
self.CWCTL.run(["test_fail", "some_instance"]) |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
163 |
self.assertEqual(cm.exception.code, 2) |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
164 |
|
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
165 |
test_fail_instance.assert_called_once() |
eb83daa69495
[cubicweb-ctl] respect sys.exit status code when aborting a command
Laurent Peuch <cortex@worlddomination.be>
parents:
12695
diff
changeset
|
166 |
|
12685
84a8a8915512
[cubicweb-ctl] move to accepting only once instance name per command
Laurent Peuch <cortex@worlddomination.be>
parents:
12568
diff
changeset
|
167 |
|
0 | 168 |
if __name__ == '__main__': |
11469
e0538fee4caa
[test] Use plain unittest in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
11057
diff
changeset
|
169 |
unittest.main() |