cubicweb/devtools/test/unittest_devctl.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Tue, 05 Jul 2016 13:27:19 +0200
branch3.23
changeset 11422 63ac20ef558e
parent 11176 4a43193ce7b0
child 11427 7d38eb1bcd1f
permissions -rw-r--r--
[pkg] Properly export data files in setup.py and adjust "newcube" test With the new package layout (everything under "cubicweb" package), the custom install_lib rule which makes use of include_dirs defined in __pkginfo__.py did not prepend the package name to source directories to be copied. Fixing this. Also, in setup.py's export() function, the destination directories' path to be created during source tree walk was wrong. All this makes cubicweb/skeleton directory (which is not a package) properly installed by setup.py. The test in cubicweb/devtools/test/unittest_devctl.py wasn't properly implemented because it used an installation of cubicweb in "develop" mode which shadows such packaging issues. Also it used "python -m cubicweb" instead of directly "cubicweb-ctl" and the former appears to fall back to using the cubicweb package *from sources* instead of the installed one. Now that this test runs against the installed version of cubicweb, fix MANIFEST.in to include tox.ini files (cubicweb's and skeleton's) as this is expected from the test. Closes #14127941.
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
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    23
import tempfile
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    24
import shutil
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    25
from subprocess import Popen, PIPE, STDOUT
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    26
from unittest import TestCase
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    27
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
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    36
class CubicWebCtlTC(TestCase):
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    37
    """test case for devtools commands"""
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    38
11137
447a6f1e8def [test] fix unittest_devctl on python3.4
Julien Cristau <julien.cristau@logilab.fr>
parents: 11136
diff changeset
    39
    if not hasattr(TestCase, 'assertItemsEqual'):
447a6f1e8def [test] fix unittest_devctl on python3.4
Julien Cristau <julien.cristau@logilab.fr>
parents: 11136
diff changeset
    40
        assertItemsEqual = TestCase.assertCountEqual
447a6f1e8def [test] fix unittest_devctl on python3.4
Julien Cristau <julien.cristau@logilab.fr>
parents: 11136
diff changeset
    41
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    42
    def test_newcube(self):
11136
b14885133f90 [test] Make sure that newcube command test produces expected files
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11099
diff changeset
    43
        expected = ['i18n', 'hooks.py', 'setup.py', 'views.py', 'test',
b14885133f90 [test] Make sure that newcube command test produces expected files
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11099
diff changeset
    44
                    'migration', 'entities.py', 'MANIFEST.in', 'schema.py',
b14885133f90 [test] Make sure that newcube command test produces expected files
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11099
diff changeset
    45
                    'cubicweb-foo.spec', '__init__.py', 'debian', 'data',
11175
df979f327e3f [skeleton] Ship a tox.ini file upon new cube
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11137
diff changeset
    46
                    '__pkginfo__.py', 'README', 'tox.ini']
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    47
        tmpdir = tempfile.mkdtemp(prefix="temp-cwctl-newcube")
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    48
        try:
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
    49
            retcode, stdout = newcube(tmpdir, 'foo')
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    50
            self.assertItemsEqual(os.listdir(osp.join(tmpdir, 'foo')), expected)
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    51
        finally:
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    52
            shutil.rmtree(tmpdir, ignore_errors=True)
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
    53
        self.assertEqual(retcode, 0, msg=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
    54
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
    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
    56
        """Ensure newcube built from skeleton is flake8-compliant"""
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    57
        tmpdir = tempfile.mkdtemp(prefix="temp-cwctl-newcube-flake8")
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    58
        try:
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    59
            newcube(tmpdir, 'foo')
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    60
            cmd = [sys.executable, '-m', 'flake8', osp.join(tmpdir, 'foo')]
4a43193ce7b0 [test] Add a test ensuring new cube built from skeleton is flake8-compliant
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11175
diff changeset
    61
            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
    62
            retcode = proc.wait()
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
        finally:
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
            shutil.rmtree(tmpdir, ignore_errors=True)
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
        self.assertEqual(retcode, 0, proc.stdout.read())
10965
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    66
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    67
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    68
if __name__ == '__main__':
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    69
    from unittest import main
b1ba18016151 [skeleton] Fix broken spec file template
Rémi Cardona <remi.cardona@logilab.fr>
parents:
diff changeset
    70
    main()