cubicweb/test/unittest_cwctl.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Fri, 05 Apr 2019 17:58:19 +0200
changeset 12567 26744ad37953
parent 12121 86ec847835cd
child 12568 fc45f22c8100
permissions -rw-r--r--
Drop python2 support This mostly consists in removing the dependency on "six" and updating the code to use only Python3 idioms. Notice that we previously used TemporaryDirectory from cubicweb.devtools.testlib for compatibility with Python2. We now directly import it from tempfile.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    18
import sys
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    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
10721
e9abbaa835f5 [tests] Port unittest_cwctl to py3k
Rémi Cardona <remi.cardona@logilab.fr>
parents: 10600
diff changeset
    23
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
from mock import patch
707139a9eb00 [cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12053
diff changeset
    25
12053
c3c9f2e1424c [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12020
diff changeset
    26
from cubicweb.cwctl import ListCommand
5430
ed8f71e244f8 [shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5426
diff changeset
    27
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
    28
from cubicweb.server.migractions import ServerMigrationHelper
ed8f71e244f8 [shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5426
diff changeset
    29
12120
707139a9eb00 [cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12053
diff changeset
    30
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
    31
5430
ed8f71e244f8 [shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5426
diff changeset
    32
11469
e0538fee4caa [test] Use plain unittest in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
    33
class CubicWebCtlTC(unittest.TestCase):
e0538fee4caa [test] Use plain unittest in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
    34
12120
707139a9eb00 [cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12053
diff changeset
    35
    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
    36
    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
    37
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    38
    def setUp(self):
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12121
diff changeset
    39
        self.stream = StringIO()
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    40
        sys.stdout = self.stream
11469
e0538fee4caa [test] Use plain unittest in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
    41
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    42
    def tearDown(self):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    43
        sys.stdout = sys.__stdout__
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
    44
12120
707139a9eb00 [cwctl] Drop 'cubicweb_' prefix when displaying cubes with 'cubicweb-ctl list'
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12053
diff changeset
    45
    @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
    46
    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
    47
        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
    48
        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
    49
        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
    50
            group='cubicweb.cubes', name=None)
1802
d628defebc17 delete-trailing-whitespace + some copyright update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
    51
12053
c3c9f2e1424c [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12020
diff changeset
    52
    def test_list_configurations(self):
c3c9f2e1424c [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12020
diff changeset
    53
        ListCommand(None).run(['configurations'])
c3c9f2e1424c [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12020
diff changeset
    54
        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
    55
                   if l.startswith('* ')]
c3c9f2e1424c [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12020
diff changeset
    56
        self.assertIn('all-in-one', configs)
c3c9f2e1424c [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12020
diff changeset
    57
        self.assertIn('pyramid', configs)
c3c9f2e1424c [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12020
diff changeset
    58
5430
ed8f71e244f8 [shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5426
diff changeset
    59
ed8f71e244f8 [shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5426
diff changeset
    60
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
    61
ed8f71e244f8 [shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5426
diff changeset
    62
    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
    63
        repo = self.repo
10353
d9a1e7939ee6 [migractions] remove any session related leftovers
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents: 9639
diff changeset
    64
        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
    65
            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
    66
                                        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
    67
                                        # 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
    68
                                        schema=1)
12121
86ec847835cd Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12120
diff changeset
    69
            scripts = {
86ec847835cd Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12120
diff changeset
    70
                'script1.py': list(),
86ec847835cd Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12120
diff changeset
    71
                'script2.py': ['-v'],
86ec847835cd Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12120
diff changeset
    72
                'script3.py': ['-vd', '-f', 'FILE.TXT'],
86ec847835cd Fix flake8 errors in unittest_cwctl
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12120
diff changeset
    73
            }
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
    74
            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
    75
                                   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
    76
            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
    77
                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
    78
                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
    79
                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
    80
ed8f71e244f8 [shell] #715938: support of script parameters (using standard '--' as arguments separator)
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 5426
diff changeset
    81
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    82
if __name__ == '__main__':
11469
e0538fee4caa [test] Use plain unittest in unittest_cwctl.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
    83
    unittest.main()