cubicweb/devtools/test/unittest_devctl.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Mon, 20 Mar 2017 10:25:04 +0100
changeset 12071 fb0b74fecc4d
parent 12053 c3c9f2e1424c
child 12567 26744ad37953
child 12688 8da08cc8640f
permissions -rw-r--r--
[test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install Otherwise, setuptools complains that the target installation directory (i.e. "user site" is not in PYTHONPATH). This is probably because we use a fake HOME with --user install option. Failure shows up when running tests through tox without system site packages (see next patch).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11176
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
     1
# copyright 2003-2016 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
     2
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
     3
#
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
     4
# This file is part of CubicWeb.
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
     5
#
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
     6
# CubicWeb is free software: you can redistribute it and/or modify it under the
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
     7
# terms of the GNU Lesser General Public License as published by the Free
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
     8
# Software Foundation, either version 2.1 of the License, or (at your option)
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
     9
# any later version.
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    10
#
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    11
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    13
# FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    14
# details.
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    15
#
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    16
# You should have received a copy of the GNU Lesser General Public License along
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    18
"""unit tests for cubicweb-ctl commands from devtools"""
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    19
11136
b14885133f90 [test] Make sure that newcube command test produces expected files
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11099
diff changeset
    20
import os
b14885133f90 [test] Make sure that newcube command test produces expected files
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11099
diff changeset
    21
import os.path as osp
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    22
import sys
12071
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
    23
from subprocess import Popen, PIPE, STDOUT
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    24
from unittest import TestCase
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    25
11912
c9e6df20e5a4 [test] use TemporaryDirectory context manager
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11456
diff changeset
    26
from cubicweb.devtools.testlib import TemporaryDirectory
c9e6df20e5a4 [test] use TemporaryDirectory context manager
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11456
diff changeset
    27
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    28
11176
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    29
def newcube(directory, name):
11422
63ac20ef558e [pkg] Properly export data files in setup.py and adjust "newcube" test
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11176
diff changeset
    30
    cmd = ['cubicweb-ctl', 'newcube', '--directory', directory, name]
11176
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    31
    proc = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=STDOUT)
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    32
    stdout, _ = proc.communicate(b'short_desc\n')
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    33
    return proc.returncode, stdout
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    34
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    35
11427
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    36
def to_unicode(msg):
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    37
    return msg.decode(sys.getdefaultencoding(), errors='replace')
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    38
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    39
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    40
class DevCtlTC(TestCase):
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    41
    """Test case for devtools commands"""
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    42
11137
447a6f1e8def [test] fix unittest_devctl on python3.4
Julien Cristau <julien.cristau@logilab.fr>
parents: 11136
diff changeset
    43
    if not hasattr(TestCase, 'assertItemsEqual'):
447a6f1e8def [test] fix unittest_devctl on python3.4
Julien Cristau <julien.cristau@logilab.fr>
parents: 11136
diff changeset
    44
        assertItemsEqual = TestCase.assertCountEqual
447a6f1e8def [test] fix unittest_devctl on python3.4
Julien Cristau <julien.cristau@logilab.fr>
parents: 11136
diff changeset
    45
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    46
    def test_newcube(self):
11454
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    47
        expected_project_content = ['setup.py', 'test', 'MANIFEST.in',
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    48
                                    'cubicweb_foo',
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    49
                                    'cubicweb-foo.spec', 'debian', 'README',
12053
c3c9f2e1424c [pyramid] Add a "pyramid" instance configuration type
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11945
diff changeset
    50
                                    'tox.ini']
11454
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    51
        expected_package_content = ['i18n', 'hooks.py', 'views.py',
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    52
                                    'migration', 'entities.py', 'schema.py',
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    53
                                    '__init__.py', 'data', '__pkginfo__.py']
11912
c9e6df20e5a4 [test] use TemporaryDirectory context manager
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11456
diff changeset
    54
        with TemporaryDirectory(prefix="temp-cwctl-newcube") as tmpdir:
11176
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    55
            retcode, stdout = newcube(tmpdir, 'foo')
11427
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    56
            self.assertEqual(retcode, 0, msg=to_unicode(stdout))
11454
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    57
            project_dir = osp.join(tmpdir, 'cubicweb-foo')
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    58
            project_content = os.listdir(project_dir)
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    59
            package_dir = osp.join(project_dir, 'cubicweb_foo')
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    60
            package_content = os.listdir(package_dir)
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    61
            self.assertItemsEqual(project_content, expected_project_content)
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    62
            self.assertItemsEqual(package_content, expected_package_content)
11176
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    63
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    64
    def test_flake8(self):
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    65
        """Ensure newcube built from skeleton is flake8-compliant"""
11912
c9e6df20e5a4 [test] use TemporaryDirectory context manager
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11456
diff changeset
    66
        with TemporaryDirectory(prefix="temp-cwctl-newcube-flake8") as tmpdir:
11176
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    67
            newcube(tmpdir, 'foo')
11454
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    68
            cmd = [sys.executable, '-m', 'flake8',
7770559e3945 [devtools] Update skeleton and newcube command to cube as package layout
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11427
diff changeset
    69
                   osp.join(tmpdir, 'cubicweb-foo', 'cubicweb_foo')]
11176
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    70
            proc = Popen(cmd, stdout=PIPE, stderr=STDOUT)
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    71
            retcode = proc.wait()
11427
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    72
        self.assertEqual(retcode, 0,
7d38eb1bcd1f [test] Check retcode of subprocesses in devctl tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11422
diff changeset
    73
                         msg=to_unicode(proc.stdout.read()))
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    74
11455
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    75
    def test_newcube_sdist(self):
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    76
        """Ensure sdist can be built from a new cube"""
11912
c9e6df20e5a4 [test] use TemporaryDirectory context manager
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11456
diff changeset
    77
        with TemporaryDirectory(prefix="temp-cwctl-newcube-sdist") as tmpdir:
11455
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    78
            newcube(tmpdir, 'foo')
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    79
            projectdir = osp.join(tmpdir, 'cubicweb-foo')
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    80
            cmd = [sys.executable, 'setup.py', 'sdist']
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    81
            proc = Popen(cmd, stdout=PIPE, stderr=STDOUT, cwd=projectdir)
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    82
            retcode = proc.wait()
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    83
            stdout = to_unicode(proc.stdout.read())
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    84
            self.assertEqual(retcode, 0, stdout)
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    85
            distfpath = osp.join(projectdir, 'dist', 'cubicweb-foo-0.1.0.tar.gz')
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    86
            self.assertTrue(osp.isfile(distfpath))
d686c4e8cdb2 [devtools] Adjust skeleton setup.py to have it read information from __pkginfo__.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11454
diff changeset
    87
11456
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
    88
    def test_newcube_install(self):
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
    89
        """Ensure a new cube can be installed"""
11912
c9e6df20e5a4 [test] use TemporaryDirectory context manager
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11456
diff changeset
    90
        with TemporaryDirectory(prefix="temp-cwctl-newcube-install") as tmpdir:
11456
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
    91
            newcube(tmpdir, 'foo')
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
    92
            projectdir = osp.join(tmpdir, 'cubicweb-foo')
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
    93
            env = os.environ.copy()
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
    94
            env['HOME'] = tmpdir
12071
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
    95
            # Retrieve user-site first to later set the PYTHONPATH.
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
    96
            proc = Popen([sys.executable, '-m', 'site', '--user-site'],
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
    97
                         stdout=PIPE, stderr=PIPE, env=env, cwd=tmpdir)
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
    98
            retcode = proc.wait()
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
    99
            # Exit codes below 2 are not errors and are ok for us (see
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   100
            # 'python3 -m site --help' for details).
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   101
            self.assertFalse(retcode > 2, to_unicode(proc.stderr.read()))
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   102
            user_site = proc.stdout.read().strip()
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   103
            # We need this otherwise setuptools will complain that the
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   104
            # installation target is not in PYTHONPATH (probably because we
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   105
            # use a fake HOME).
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   106
            env['PYTHONPATH'] = user_site
11456
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   107
            cmd = [sys.executable, 'setup.py', 'install', '--user']
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   108
            proc = Popen(cmd, stdout=PIPE, stderr=STDOUT,
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   109
                         cwd=projectdir, env=env)
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   110
            retcode = proc.wait()
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   111
            stdout = to_unicode(proc.stdout.read())
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   112
            self.assertEqual(retcode, 0, stdout)
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   113
            target_egg = 'cubicweb_foo-0.1.0-py{0}.egg'.format(sys.version[:3]).encode()
12071
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   114
            self.assertTrue(osp.isdir(osp.join(user_site, target_egg)),
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   115
                            'target directory content: %s' % os.listdir(user_site))
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   116
            pkgdir = osp.join(user_site, target_egg, b'cubicweb_foo')
11456
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   117
            self.assertTrue(osp.isdir(pkgdir),
12071
fb0b74fecc4d [test] Add user-site to PYTHONPATH before installation of new cube in test_newcube_install
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12053
diff changeset
   118
                            os.listdir(osp.join(user_site, target_egg)))
11456
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   119
            pkgcontent = [f for f in os.listdir(pkgdir) if f.endswith(b'.py')]
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   120
            self.assertItemsEqual(pkgcontent,
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   121
                                  [b'schema.py', b'entities.py', b'hooks.py', b'__init__.py',
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   122
                                   b'__pkginfo__.py', b'views.py'])
077f32a7a4c3 [devtools] Update skeleton's setup.py to install cube as a package
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11455
diff changeset
   123
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
   124
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
   125
if __name__ == '__main__':
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
   126
    from unittest import main
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
   127
    main()