cubicweb/test/unittest_cwconfig.py
author Denis Laxalde <denis.laxalde@logilab.fr>
Fri, 23 Sep 2016 16:04:32 +0200
changeset 11478 1817f8946c22
parent 11476 a9f26de5ea6c
child 11631 faf279e33298
permissions -rw-r--r--
[tox] Have less test environments This is to reduce the load on CI server because of parallel clones of the repository in Docker containers. Only keep "server", and "web" environments separated. All other prior environments are in "misc". To avoid duplicate entries in requirements files, move them all in a "requirements" directory (this appears to be a "common" practice, see e.g. Celery). Adjustments in tests: * Rename cubicweb/hooks/test/unittest_notification.py so that it does not conflict with cubicweb/sobjects/test/unittest_notification.py during test discovery as they would have the same module name but different __file__ attribute. * Add "comment" cube to the list of expected cubes in unittest_cwconfig.py as this cube is pulled by requirements/test-mist.txt. Closes #15440662.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8537
e30d0a7f0087 [config] turn internal configuration methods building appobjects search path into normal method rather than class method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7791
diff changeset
     1
# copyright 2003-2012 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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
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: 4691
diff changeset
    17
# with CubicWeb.  If not, see <http://www.gnu.org/licenses/>.
6314
b233cc448bdd [test] add some fake cubes necessary for test so we don't depend on the actual forge cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5426
diff changeset
    18
"""cubicweb.cwconfig unit tests"""
1977
606923dff11b big bunch of copyright / docstring update
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1640
diff changeset
    19
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
    20
import sys
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    21
import os
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
    22
import tempfile
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
    23
from os.path import dirname, join, abspath
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    24
from pkg_resources import EntryPoint, Distribution
11448
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
    25
import unittest
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    26
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    27
from mock import patch
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    28
from six import PY3
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    29
4691
ae468fae9965 [test] fix test inter-dependancies pb. Pytest ok in each individual test dir, though not yet for whole cubicweb, but for different reasons
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4681
diff changeset
    30
from logilab.common.modutils import cleanup_sys_modules
11448
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
    31
from logilab.common.testlib import with_tempdir
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    32
from logilab.common.changelog import Version
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    33
11448
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
    34
from cubicweb.devtools import ApptestConfiguration, testlib
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
    35
from cubicweb.cwconfig import _find_prefix
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    36
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    37
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    38
def unabsolutize(path):
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    39
    parts = path.split(os.sep)
515
92d95b86263e search in reverted order else in case of installed cubes (eg in cubicweb/cubes) we do not remove all expected parts
sylvain.thenault@logilab.fr
parents: 13
diff changeset
    40
    for i, part in reversed(tuple(enumerate(parts))):
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    41
        if part.startswith('cubicweb_'):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    42
            return os.sep.join([part[len('cubicweb_'):]] + parts[i+1:])
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    43
        if part.startswith('cubicweb') or part == 'legacy_cubes':
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    44
            return os.sep.join(parts[i+1:])
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    45
    raise Exception('duh? %s' % path)
1640
65b60f177eb1 fix tests
sylvain.thenault@logilab.fr
parents: 1341
diff changeset
    46
4681
5f72584ab1d7 [test] cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4490
diff changeset
    47
11448
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
    48
class CubicWebConfigurationTC(testlib.BaseTestCase):
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
    49
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    50
    @classmethod
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    51
    def setUpClass(cls):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    52
        sys.path.append(cls.datapath('libpython'))
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    53
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    54
    @classmethod
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    55
    def tearDownClass(cls):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    56
        sys.path.remove(cls.datapath('libpython'))
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    57
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    58
    def setUp(self):
11269
73ac69970047 [devtools] Simplify test configuration's init
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11072
diff changeset
    59
        self.config = ApptestConfiguration('data', __file__)
13
bae30087db21 fix unittests in cubicweb/test
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
    60
        self.config._cubes = ('email', 'file')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    61
1341
9502d02630bf fix tests
sylvain.thenault@logilab.fr
parents: 1263
diff changeset
    62
    def tearDown(self):
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
    63
        ApptestConfiguration.CUBES_PATH = []
1341
9502d02630bf fix tests
sylvain.thenault@logilab.fr
parents: 1263
diff changeset
    64
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    65
    def iter_entry_points(group, name):
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    66
        """Mock pkg_resources.iter_entry_points to yield EntryPoint from
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    67
        packages found in test/data/libpython even though these are not
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    68
        installed.
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    69
        """
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    70
        libpython = CubicWebConfigurationTC.datapath('libpython')
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    71
        prefix = 'cubicweb_'
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    72
        for pkgname in os.listdir(libpython):
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    73
            if not pkgname.startswith(prefix):
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    74
                continue
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    75
            location = join(libpython, pkgname)
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    76
            yield EntryPoint(pkgname[len(prefix):], pkgname,
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    77
                             dist=Distribution(location))
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    78
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    79
    @patch('pkg_resources.iter_entry_points', side_effect=iter_entry_points)
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    80
    def test_available_cubes(self, mock_iter_entry_points):
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    81
        expected_cubes = [
11478
1817f8946c22 [tox] Have less test environments
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11476
diff changeset
    82
            'card', 'comment', 'cubicweb_comment', 'cubicweb_email', 'file',
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    83
            'cubicweb_file', 'cubicweb_forge', 'localperms',
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    84
            'cubicweb_mycube', 'tag',
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    85
        ]
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    86
        self._test_available_cubes(expected_cubes)
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    87
        mock_iter_entry_points.assert_called_once_with(
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    88
            group='cubicweb.cubes', name=None)
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    89
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    90
    def _test_available_cubes(self, expected_cubes):
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    91
        self.assertEqual(self.config.available_cubes(), expected_cubes)
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    92
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    93
    def test_reorder_cubes(self):
6314
b233cc448bdd [test] add some fake cubes necessary for test so we don't depend on the actual forge cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5426
diff changeset
    94
        # forge depends on email and file and comment
13
bae30087db21 fix unittests in cubicweb/test
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
    95
        # email depends on file
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
    96
        self.assertEqual(self.config.reorder_cubes(['file', 'email', 'forge']),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
    97
                          ('forge', 'email', 'file'))
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
    98
        self.assertEqual(self.config.reorder_cubes(['email', 'file', 'forge']),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
    99
                          ('forge', 'email', 'file'))
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   100
        self.assertEqual(self.config.reorder_cubes(['email', 'forge', 'file']),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
   101
                          ('forge', 'email', 'file'))
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   102
        self.assertEqual(self.config.reorder_cubes(['file', 'forge', 'email']),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
   103
                          ('forge', 'email', 'file'))
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   104
        self.assertEqual(self.config.reorder_cubes(['forge', 'file', 'email']),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
   105
                          ('forge', 'email', 'file'))
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   106
        self.assertEqual(self.config.reorder_cubes(('forge', 'email', 'file')),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
   107
                          ('forge', 'email', 'file'))
1640
65b60f177eb1 fix tests
sylvain.thenault@logilab.fr
parents: 1341
diff changeset
   108
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   109
    def test_reorder_cubes_recommends(self):
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   110
        from cubicweb_comment import __pkginfo__ as comment_pkginfo
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   111
        self._test_reorder_cubes_recommends(comment_pkginfo)
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   112
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   113
    def _test_reorder_cubes_recommends(self, comment_pkginfo):
5025
2826f5406201 deprecate __use__ and __recommend__
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5021
diff changeset
   114
        comment_pkginfo.__recommends_cubes__ = {'file': None}
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   115
        try:
13
bae30087db21 fix unittests in cubicweb/test
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
   116
            # email recommends comment
bae30087db21 fix unittests in cubicweb/test
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
   117
            # comment recommends file
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   118
            self.assertEqual(self.config.reorder_cubes(('forge', 'email', 'file', 'comment')),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
   119
                              ('forge', 'email', 'comment', 'file'))
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   120
            self.assertEqual(self.config.reorder_cubes(('forge', 'email', 'comment', 'file')),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
   121
                              ('forge', 'email', 'comment', 'file'))
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   122
            self.assertEqual(self.config.reorder_cubes(('forge', 'comment', 'email', 'file')),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
   123
                              ('forge', 'email', 'comment', 'file'))
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   124
            self.assertEqual(self.config.reorder_cubes(('comment', 'forge', 'email', 'file')),
2036
68ee0ffb66a7 replace jpl with forge in test
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents: 1977
diff changeset
   125
                              ('forge', 'email', 'comment', 'file'))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   126
        finally:
5025
2826f5406201 deprecate __use__ and __recommend__
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5021
diff changeset
   127
            comment_pkginfo.__recommends_cubes__ = {}
1640
65b60f177eb1 fix tests
sylvain.thenault@logilab.fr
parents: 1341
diff changeset
   128
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   129
    def test_expand_cubes(self):
6411
308f6d0e11ae [test] don't add unnecessary dependency to blog
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6349
diff changeset
   130
        self.assertEqual(self.config.expand_cubes(('email', 'comment')),
308f6d0e11ae [test] don't add unnecessary dependency to blog
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6349
diff changeset
   131
                          ['email', 'comment', 'file'])
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   132
8537
e30d0a7f0087 [config] turn internal configuration methods building appobjects search path into normal method rather than class method
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7791
diff changeset
   133
    def test_appobjects_path(self):
10239
495efb844048 [test] don't rely on a stable ordering for appobject_path
Julien Cristau <julien.cristau@logilab.fr>
parents: 9674
diff changeset
   134
        path = [unabsolutize(p) for p in self.config.appobjects_path()]
495efb844048 [test] don't rely on a stable ordering for appobject_path
Julien Cristau <julien.cristau@logilab.fr>
parents: 9674
diff changeset
   135
        self.assertEqual(path[0], 'entities')
495efb844048 [test] don't rely on a stable ordering for appobject_path
Julien Cristau <julien.cristau@logilab.fr>
parents: 9674
diff changeset
   136
        self.assertCountEqual(path[1:4], ['web/views', 'sobjects', 'hooks'])
495efb844048 [test] don't rely on a stable ordering for appobject_path
Julien Cristau <julien.cristau@logilab.fr>
parents: 9674
diff changeset
   137
        self.assertEqual(path[4], 'file/entities')
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   138
        self.assertCountEqual(path[5:7],
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   139
                              ['file/views.py', 'file/hooks'])
10239
495efb844048 [test] don't rely on a stable ordering for appobject_path
Julien Cristau <julien.cristau@logilab.fr>
parents: 9674
diff changeset
   140
        self.assertEqual(path[7], 'email/entities.py')
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   141
        self.assertCountEqual(path[8:10],
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   142
                              ['email/views', 'email/hooks.py'])
10239
495efb844048 [test] don't rely on a stable ordering for appobject_path
Julien Cristau <julien.cristau@logilab.fr>
parents: 9674
diff changeset
   143
        self.assertEqual(path[10:], ['test/data/entities.py', 'test/data/views.py'])
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   144
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   145
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   146
class CubicWebConfigurationWithLegacyCubesTC(CubicWebConfigurationTC):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   147
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   148
    @classmethod
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   149
    def setUpClass(cls):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   150
        pass
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   151
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   152
    @classmethod
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   153
    def tearDownClass(cls):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   154
        pass
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   155
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   156
    def setUp(self):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   157
        self.custom_cubes_dir = self.datapath('legacy_cubes')
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   158
        cleanup_sys_modules([self.custom_cubes_dir, ApptestConfiguration.CUBES_DIR])
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   159
        super(CubicWebConfigurationWithLegacyCubesTC, self).setUp()
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   160
        self.config.__class__.CUBES_PATH = [self.custom_cubes_dir]
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   161
        self.config.adjust_sys_path()
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   162
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   163
    def tearDown(self):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   164
        ApptestConfiguration.CUBES_PATH = []
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   165
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   166
    def test_available_cubes(self):
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   167
        expected_cubes = sorted(set([
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   168
            # local cubes
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   169
            'comment', 'email', 'file', 'forge', 'mycube',
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   170
            # test dependencies
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   171
            'card', 'file', 'localperms', 'tag',
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   172
        ]))
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   173
        self._test_available_cubes(expected_cubes)
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   174
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   175
    def test_reorder_cubes_recommends(self):
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   176
        from cubes.comment import __pkginfo__ as comment_pkginfo
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   177
        self._test_reorder_cubes_recommends(comment_pkginfo)
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   178
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   179
    def test_cubes_path(self):
1023
278f997aa257 fix sys.path adjustment
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1015
diff changeset
   180
        # make sure we don't import the email cube, but the stdlib email package
278f997aa257 fix sys.path adjustment
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 1015
diff changeset
   181
        import email
6412
370357e68837 [test] cleanup / unittest2 api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6411
diff changeset
   182
        self.assertNotEqual(dirname(email.__file__), self.config.CUBES_DIR)
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   183
        self.config.__class__.CUBES_PATH = [self.custom_cubes_dir]
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   184
        self.assertEqual(self.config.cubes_search_path(),
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   185
                          [self.custom_cubes_dir, self.config.CUBES_DIR])
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   186
        self.config.__class__.CUBES_PATH = [self.custom_cubes_dir,
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   187
                                            self.config.CUBES_DIR, 'unexistant']
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   188
        # filter out unexistant and duplicates
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   189
        self.assertEqual(self.config.cubes_search_path(),
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   190
                          [self.custom_cubes_dir,
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   191
                           self.config.CUBES_DIR])
9674
96549de9dd70 [test] use assertIn where appropriate
Julien Cristau <julien.cristau@logilab.fr>
parents: 8537
diff changeset
   192
        self.assertIn('mycube', self.config.available_cubes())
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   193
        # test cubes python path
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   194
        self.config.adjust_sys_path()
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   195
        import cubes
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   196
        self.assertEqual(cubes.__path__, self.config.cubes_search_path())
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   197
        # this import should succeed once path is adjusted
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   198
        from cubes import mycube
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   199
        self.assertEqual(mycube.__path__, [join(self.custom_cubes_dir, 'mycube')])
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   200
        # file cube should be overriden by the one found in data/cubes
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   201
        if sys.modules.pop('cubes.file', None) and PY3:
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   202
            del cubes.file
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   203
        from cubes import file
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   204
        self.assertEqual(file.__path__, [join(self.custom_cubes_dir, 'file')])
1640
65b60f177eb1 fix tests
sylvain.thenault@logilab.fr
parents: 1341
diff changeset
   205
11476
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   206
    def test_config_value_from_environment(self):
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   207
        self.assertIsNone(self.config['base-url'])
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   208
        os.environ['CW_BASE_URL'] = 'https://www.cubicweb.org'
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   209
        try:
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   210
            self.assertEqual(self.config['base-url'],
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   211
                             'https://www.cubicweb.org')
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   212
        finally:
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   213
            del os.environ['CW_BASE_URL']
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   214
6314
b233cc448bdd [test] add some fake cubes necessary for test so we don't depend on the actual forge cube
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5426
diff changeset
   215
11448
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
   216
class FindPrefixTC(unittest.TestCase):
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   217
    def make_dirs(self, *args):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   218
        path = join(tempfile.tempdir, *args)
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   219
        if not os.path.exists(path):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   220
            os.makedirs(path)
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   221
        return path
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   222
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   223
    def make_file(self, *args):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   224
        self.make_dirs(*args[: -1])
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   225
        file_path = join(tempfile.tempdir, *args)
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   226
        file_obj = open(file_path, 'w')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   227
        file_obj.write('""" None """')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   228
        file_obj.close()
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   229
        return file_path
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   230
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   231
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   232
    def test_samedir(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   233
        prefix = tempfile.tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   234
        self.make_dirs('share', 'cubicweb')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   235
        self.assertEqual(_find_prefix(prefix), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   236
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   237
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   238
    def test_samedir_filepath(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   239
        prefix = tempfile.tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   240
        self.make_dirs('share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   241
        file_path = self.make_file('bob.py')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   242
        self.assertEqual(_find_prefix(file_path), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   243
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   244
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   245
    def test_dir_inside_prefix(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   246
        prefix = tempfile.tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   247
        self.make_dirs('share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   248
        dir_path = self.make_dirs('bob')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   249
        self.assertEqual(_find_prefix(dir_path), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   250
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   251
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   252
    def test_file_in_dir_inside_prefix(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   253
        prefix = tempfile.tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   254
        self.make_dirs('share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   255
        file_path = self.make_file('bob', 'toto.py')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   256
        self.assertEqual(_find_prefix(file_path), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   257
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   258
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   259
    def test_file_in_deeper_dir_inside_prefix(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   260
        prefix = tempfile.tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   261
        self.make_dirs('share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   262
        file_path = self.make_file('bob', 'pyves', 'alain', 'adim', 'syt', 'toto.py')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   263
        self.assertEqual(_find_prefix(file_path), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   264
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   265
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   266
    def test_multiple_candidate_prefix(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   267
        self.make_dirs('share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   268
        prefix = self.make_dirs('bob')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   269
        self.make_dirs('bob', 'share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   270
        file_path = self.make_file('bob', 'pyves', 'alain', 'adim', 'syt', 'toto.py')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   271
        self.assertEqual(_find_prefix(file_path), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   272
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   273
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   274
    def test_sister_candidate_prefix(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   275
        prefix = tempfile.tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   276
        self.make_dirs('share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   277
        self.make_dirs('bob', 'share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   278
        file_path = self.make_file('bell', 'toto.py')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   279
        self.assertEqual(_find_prefix(file_path), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   280
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   281
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   282
    def test_multiple_parent_candidate_prefix(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   283
        self.make_dirs('share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   284
        prefix = self.make_dirs('share', 'cubicweb', 'bob')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   285
        self.make_dirs('share', 'cubicweb', 'bob', 'share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   286
        file_path = self.make_file('share', 'cubicweb', 'bob', 'pyves', 'alain', 'adim', 'syt', 'toto.py')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   287
        self.assertEqual(_find_prefix(file_path), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   288
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   289
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   290
    def test_upper_candidate_prefix(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   291
        prefix = tempfile.tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   292
        self.make_dirs('share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   293
        self.make_dirs('bell','bob',  'share', 'cubicweb')
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   294
        file_path = self.make_file('bell', 'toto.py')
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   295
        self.assertEqual(_find_prefix(file_path), prefix)
5021
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   296
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   297
    @with_tempdir
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   298
    def test_no_prefix(self):
58e89f3dfbae handle nicely typical installation other than debian package / mercurial forest
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 4691
diff changeset
   299
        prefix = tempfile.tempdir
6340
470d8e828fda [test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6314
diff changeset
   300
        self.assertEqual(_find_prefix(prefix), sys.prefix)
1640
65b60f177eb1 fix tests
sylvain.thenault@logilab.fr
parents: 1341
diff changeset
   301
11072
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   302
    @with_tempdir
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   303
    def test_virtualenv(self):
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   304
        venv = os.environ.get('VIRTUAL_ENV')
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   305
        try:
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   306
            prefix = os.environ['VIRTUAL_ENV'] = tempfile.tempdir
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   307
            self.make_dirs('share', 'cubicweb')
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   308
            self.assertEqual(_find_prefix(), prefix)
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   309
        finally:
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   310
            if venv:
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   311
                os.environ['VIRTUAL_ENV'] = venv
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   312
8c3155a0ae5b Handle virtualenv development mode
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11057
diff changeset
   313
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   314
if __name__ == '__main__':
11448
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
   315
    unittest.main()