cubicweb/test/unittest_cwconfig.py
author Philippe Pepiot <ph@itsalwaysdns.eu>
Tue, 31 Mar 2020 19:15:03 +0200
changeset 12957 0c973204033a
parent 12568 fc45f22c8100
child 12940 8929ccd43771
child 12966 6cd938c29ca3
permissions -rw-r--r--
[server] prevent returning closed cursor to the database pool In since c8c6ad8 init_repository use repo.internal_cnx() instead of repo.system_source.get_connection() so it use the pool and we should not close cursors from the pool before returning it back. Otherwise we may have "connection already closed" error. This bug only trigger when connection-pool-size = 1. Since we are moving to use a dynamic pooler we need to get this fixed. This does not occur with sqlite since the connection wrapper instantiate new cursor everytime, but this occur with other databases.
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
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    20
import contextlib
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    21
import functools
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
    22
import sys
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    23
import os
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    24
import pkgutil
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
    25
from os.path import dirname, join
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
    26
from pkg_resources import EntryPoint, Distribution
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12547
diff changeset
    27
from tempfile import TemporaryDirectory
11448
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
    28
import unittest
12568
fc45f22c8100 [test] use unittest.mock instead of mock library
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12567
diff changeset
    29
from unittest.mock import patch
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    30
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
    31
from logilab.common.modutils import cleanup_sys_modules
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    32
11744
a6dc650bc230 [test] Replace logilab-common's with_tempdir by tempfile.TemporaryDirectory
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11743
diff changeset
    33
from cubicweb.devtools import ApptestConfiguration
12567
26744ad37953 Drop python2 support
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12547
diff changeset
    34
from cubicweb.devtools.testlib import BaseTestCase
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    35
from cubicweb.cwconfig import (
12273
9d08f89a3d85 [cwconfig] Always use "sys.prefix" to determine installation prefix
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12272
diff changeset
    36
    CubicWebConfiguration, _expand_modname)
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    37
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    38
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    39
def templibdir(func):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    40
    """create a temporary directory and insert it in sys.path"""
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    41
    @functools.wraps(func)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    42
    def wrapper(*args, **kwargs):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    43
        with TemporaryDirectory() as libdir:
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    44
            sys.path.insert(0, libdir)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    45
            try:
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    46
                args = args + (libdir,)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    47
                return func(*args, **kwargs)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    48
            finally:
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    49
                sys.path.remove(libdir)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    50
    return wrapper
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    51
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    52
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    53
def create_filepath(filepath):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    54
    filedir = dirname(filepath)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    55
    if not os.path.exists(filedir):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    56
        os.makedirs(filedir)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    57
    with open(filepath, 'a'):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    58
        pass
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    59
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    60
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    61
@contextlib.contextmanager
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
    62
def temp_config(appid, instance_dir, cubes):
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    63
    """context manager that create a config object with specified appid,
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
    64
    instance_dir and cubes"""
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    65
    cls = CubicWebConfiguration
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
    66
    old = (cls._INSTANCES_DIR,
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    67
           sys.path[:], sys.meta_path[:])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    68
    old_modules = set(sys.modules)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    69
    try:
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
    70
        cls._INSTANCES_DIR = instance_dir
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    71
        config = cls(appid)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    72
        config._cubes = cubes
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    73
        config.adjust_sys_path()
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    74
        yield config
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    75
    finally:
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
    76
        (cls._INSTANCES_DIR, sys.path[:], sys.meta_path[:]) = old
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    77
        for module in set(sys.modules) - old_modules:
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    78
            del sys.modules[module]
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    79
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
    80
12117
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    81
def iter_entry_points(group, name):
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    82
    """Mock pkg_resources.iter_entry_points to yield EntryPoint from
12518
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
    83
    packages found in test/data even though these are not
12117
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    84
    installed.
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    85
    """
12518
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
    86
    libpython = CubicWebConfigurationTC.datapath()
12117
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    87
    prefix = 'cubicweb_'
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    88
    for pkgname in os.listdir(libpython):
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    89
        if not pkgname.startswith(prefix):
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    90
            continue
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    91
        location = join(libpython, pkgname)
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    92
        yield EntryPoint(pkgname[len(prefix):], pkgname,
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    93
                         dist=Distribution(location))
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    94
49beb974888f [test] Extract out method-which-is-not-a-method mocking iter_entry_points
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12115
diff changeset
    95
11744
a6dc650bc230 [test] Replace logilab-common's with_tempdir by tempfile.TemporaryDirectory
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11743
diff changeset
    96
class CubicWebConfigurationTC(BaseTestCase):
11448
f79c6894381f [test] Avoid usage of lgc.testlib TestCase in unittest_cwconfig.py
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11269
diff changeset
    97
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    98
    @classmethod
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
    99
    def setUpClass(cls):
12518
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   100
        sys.path.append(cls.datapath())
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   101
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   102
    @classmethod
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   103
    def tearDownClass(cls):
12518
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   104
        sys.path.remove(cls.datapath())
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   105
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   106
    def setUp(self):
11269
73ac69970047 [devtools] Simplify test configuration's init
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 11072
diff changeset
   107
        self.config = ApptestConfiguration('data', __file__)
13
bae30087db21 fix unittests in cubicweb/test
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
   108
        self.config._cubes = ('email', 'file')
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   109
1341
9502d02630bf fix tests
sylvain.thenault@logilab.fr
parents: 1263
diff changeset
   110
    def tearDown(self):
12518
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   111
        cleanup_sys_modules([self.datapath()])
1341
9502d02630bf fix tests
sylvain.thenault@logilab.fr
parents: 1263
diff changeset
   112
12272
36032de96867 [cwconfig] Look for migration scripts directory relatively to code
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12165
diff changeset
   113
    def test_migration_scripts_dir(self):
36032de96867 [cwconfig] Look for migration scripts directory relatively to code
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12165
diff changeset
   114
        mscripts = os.listdir(self.config.migration_scripts_dir())
36032de96867 [cwconfig] Look for migration scripts directory relatively to code
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12165
diff changeset
   115
        self.assertIn('bootstrapmigration_repository.py', mscripts)
36032de96867 [cwconfig] Look for migration scripts directory relatively to code
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12165
diff changeset
   116
        self.assertIn('postcreate.py', mscripts)
36032de96867 [cwconfig] Look for migration scripts directory relatively to code
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12165
diff changeset
   117
        self.assertIn('3.24.0_Any.py', mscripts)
36032de96867 [cwconfig] Look for migration scripts directory relatively to code
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12165
diff changeset
   118
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   119
    @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
   120
    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
   121
        expected_cubes = [
12518
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   122
            'cubicweb_card',
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   123
            'cubicweb_comment',
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   124
            'cubicweb_email',
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   125
            'cubicweb_file',
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   126
            'cubicweb_forge',
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   127
            'cubicweb_localperms',
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   128
            'cubicweb_mycube',
12e8b65146d9 [test] drop dependency on third party cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12517
diff changeset
   129
            'cubicweb_tag',
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   130
        ]
12498
1ec5b23b92e7 [test] Inline _test_available_cubes() method in cwconfig tests
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 12274
diff changeset
   131
        self.assertEqual(self.config.available_cubes(), expected_cubes)
11472
bc04039acd2e [config] Make available_cubes aware of cubes installed as packages
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11459
diff changeset
   132
        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
   133
            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
   134
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   135
    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
   136
        # 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
   137
        # 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
   138
        self.assertEqual(self.config.reorder_cubes(['file', 'email', 'forge']),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   139
                         ('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
   140
        self.assertEqual(self.config.reorder_cubes(['email', 'file', 'forge']),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   141
                         ('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
   142
        self.assertEqual(self.config.reorder_cubes(['email', 'forge', 'file']),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   143
                         ('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
   144
        self.assertEqual(self.config.reorder_cubes(['file', 'forge', 'email']),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   145
                         ('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
   146
        self.assertEqual(self.config.reorder_cubes(['forge', 'file', 'email']),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   147
                         ('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
   148
        self.assertEqual(self.config.reorder_cubes(('forge', 'email', 'file')),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   149
                         ('forge', 'email', 'file'))
1640
65b60f177eb1 fix tests
sylvain.thenault@logilab.fr
parents: 1341
diff changeset
   150
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   151
    def test_reorder_cubes_recommends(self):
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   152
        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
   153
        self._test_reorder_cubes_recommends(comment_pkginfo)
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   154
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   155
    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
   156
        comment_pkginfo.__recommends_cubes__ = {'file': None}
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   157
        try:
13
bae30087db21 fix unittests in cubicweb/test
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
   158
            # email recommends comment
bae30087db21 fix unittests in cubicweb/test
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents: 0
diff changeset
   159
            # 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
   160
            self.assertEqual(self.config.reorder_cubes(('forge', 'email', 'file', 'comment')),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   161
                             ('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
   162
            self.assertEqual(self.config.reorder_cubes(('forge', 'email', 'comment', 'file')),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   163
                             ('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
   164
            self.assertEqual(self.config.reorder_cubes(('forge', 'comment', 'email', 'file')),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   165
                             ('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
   166
            self.assertEqual(self.config.reorder_cubes(('comment', 'forge', 'email', 'file')),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   167
                             ('forge', 'email', 'comment', 'file'))
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   168
        finally:
5025
2826f5406201 deprecate __use__ and __recommend__
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 5021
diff changeset
   169
            comment_pkginfo.__recommends_cubes__ = {}
1640
65b60f177eb1 fix tests
sylvain.thenault@logilab.fr
parents: 1341
diff changeset
   170
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   171
    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
   172
        self.assertEqual(self.config.expand_cubes(('email', 'comment')),
12119
c4ed3f6463f6 Fix flake8 errors in unittest_cwconfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12118
diff changeset
   173
                         ['email', 'comment', 'file'])
1015
b5fdad9208f8 search for cubes in a list of directories
sylvain.thenault@logilab.fr
parents: 515
diff changeset
   174
11710
dd5df5fe7137 [config] Exclude "pyramid" cube when initializing application cubes
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11681
diff changeset
   175
    def test_init_cubes_ignore_pyramid_cube(self):
dd5df5fe7137 [config] Exclude "pyramid" cube when initializing application cubes
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11681
diff changeset
   176
        warning_msg = 'cubicweb-pyramid got integrated into CubicWeb'
dd5df5fe7137 [config] Exclude "pyramid" cube when initializing application cubes
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11681
diff changeset
   177
        with self.assertLogs('cubicweb.configuration', level='WARNING') as cm:
dd5df5fe7137 [config] Exclude "pyramid" cube when initializing application cubes
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11681
diff changeset
   178
            self.config.init_cubes(['pyramid', 'card'])
dd5df5fe7137 [config] Exclude "pyramid" cube when initializing application cubes
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11681
diff changeset
   179
        self.assertIn(warning_msg, cm.output[0])
dd5df5fe7137 [config] Exclude "pyramid" cube when initializing application cubes
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11681
diff changeset
   180
        self.assertNotIn('pyramid', self.config._cubes)
11459
8987a05950dc Handle cubes as packages in cwconfig
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11448
diff changeset
   181
12118
d7947c3c0eeb [config] Test loading of ccplugin modules
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12117
diff changeset
   182
    @patch('pkg_resources.iter_entry_points', side_effect=iter_entry_points)
d7947c3c0eeb [config] Test loading of ccplugin modules
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12117
diff changeset
   183
    def test_ccplugin_modname(self, mock_iter_entry_points):
d7947c3c0eeb [config] Test loading of ccplugin modules
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12117
diff changeset
   184
        self.config.load_cwctl_plugins()
d7947c3c0eeb [config] Test loading of ccplugin modules
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12117
diff changeset
   185
        mock_iter_entry_points.assert_called_once_with(
d7947c3c0eeb [config] Test loading of ccplugin modules
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12117
diff changeset
   186
            group='cubicweb.cubes', name=None)
d7947c3c0eeb [config] Test loading of ccplugin modules
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12117
diff changeset
   187
        self.assertIn('cubicweb_mycube.ccplugin', sys.modules, sorted(sys.modules))
d7947c3c0eeb [config] Test loading of ccplugin modules
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12117
diff changeset
   188
11859
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   189
    def test_config_value_from_environment_str(self):
11476
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   190
        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
   191
        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
   192
        try:
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   193
            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
   194
                             'https://www.cubicweb.org')
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   195
        finally:
a9f26de5ea6c Let configuration option be overridden by environment variables
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 11472
diff changeset
   196
            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
   197
11859
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   198
    def test_config_value_from_environment_int(self):
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   199
        self.assertEqual(self.config['connections-pool-size'], 4)
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   200
        os.environ['CW_CONNECTIONS_POOL_SIZE'] = '6'
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   201
        try:
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   202
            self.assertEqual(self.config['connections-pool-size'], 6)
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   203
        finally:
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   204
            del os.environ['CW_CONNECTIONS_POOL_SIZE']
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   205
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   206
    def test_config_value_from_environment_yn(self):
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   207
        self.assertEqual(self.config['allow-email-login'], False)
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   208
        try:
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   209
            for val, result in (('yes', True), ('no', False),
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   210
                                ('y', True), ('n', False),):
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   211
                os.environ['CW_ALLOW_EMAIL_LOGIN'] = val
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   212
            self.assertEqual(self.config['allow-email-login'], result)
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   213
        finally:
2e1a1ebd4730 [cwconfig] ensure CubicWebNoAppConfiguration returns a typed value (closes #16364459)
David Douard <david.douard@logilab.fr>
parents: 11744
diff changeset
   214
            del os.environ['CW_ALLOW_EMAIL_LOGIN']
12118
d7947c3c0eeb [config] Test loading of ccplugin modules
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 12117
diff changeset
   215
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
   216
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   217
class ModnamesTC(unittest.TestCase):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   218
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   219
    @templibdir
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   220
    def test_expand_modnames(self, libdir):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   221
        tempdir = join(libdir, 'lib')
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   222
        filepaths = [
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   223
            join(tempdir, '__init__.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   224
            join(tempdir, 'a.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   225
            join(tempdir, 'b.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   226
            join(tempdir, 'c.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   227
            join(tempdir, 'b', '__init__.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   228
            join(tempdir, 'b', 'a.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   229
            join(tempdir, 'b', 'c.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   230
            join(tempdir, 'b', 'd', '__init__.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   231
            join(tempdir, 'e', 'e.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   232
        ]
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   233
        for filepath in filepaths:
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   234
            create_filepath(filepath)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   235
        # not importable
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   236
        self.assertEqual(list(_expand_modname('isnotimportable')), [])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   237
        # not a python package
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   238
        self.assertEqual(list(_expand_modname('lib.e')), [])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   239
        self.assertEqual(list(_expand_modname('lib.a')), [
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   240
            ('lib.a', join(tempdir, 'a.py')),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   241
        ])
12165
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   242
        # lib.b.d should be imported
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   243
        self.assertEqual(list(_expand_modname('lib.b')), [
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   244
            ('lib.b', join(tempdir, 'b', '__init__.py')),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   245
            ('lib.b.a', join(tempdir, 'b', 'a.py')),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   246
            ('lib.b.c', join(tempdir, 'b', 'c.py')),
12165
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   247
            ('lib.b.d', join(tempdir, 'b', 'd', '__init__.py')),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   248
        ])
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   249
        # lib.b.d should not be imported without recursive mode
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   250
        self.assertEqual(list(_expand_modname('lib.b', recursive=False)), [
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   251
            ('lib.b', join(tempdir, 'b', '__init__.py')),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   252
            ('lib.b.a', join(tempdir, 'b', 'a.py')),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   253
            ('lib.b.c', join(tempdir, 'b', 'c.py')),
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   254
        ])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   255
        self.assertEqual(list(_expand_modname('lib')), [
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   256
            ('lib', join(tempdir, '__init__.py')),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   257
            ('lib.a', join(tempdir, 'a.py')),
12165
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   258
            ('lib.b', join(tempdir, 'b', '__init__.py')),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   259
            ('lib.b.a', join(tempdir, 'b', 'a.py')),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   260
            ('lib.b.c', join(tempdir, 'b', 'c.py')),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   261
            ('lib.b.d', join(tempdir, 'b', 'd', '__init__.py')),
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   262
            ('lib.c', join(tempdir, 'c.py')),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   263
        ])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   264
        for source in (
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   265
            join(tempdir, 'c.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   266
            join(tempdir, 'b', 'c.py'),
12165
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   267
            join(tempdir, 'b', 'd', '__init__.py'),
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   268
        ):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   269
            # remove source file
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   270
            os.remove(source)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   271
        self.assertEqual(list(_expand_modname('lib.c')), [])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   272
        self.assertEqual(list(_expand_modname('lib.b')), [
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   273
            ('lib.b', join(tempdir, 'b', '__init__.py')),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   274
            ('lib.b.a', join(tempdir, 'b', 'a.py')),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   275
        ])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   276
        self.assertEqual(list(_expand_modname('lib')), [
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   277
            ('lib', join(tempdir, '__init__.py')),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   278
            ('lib.a', join(tempdir, 'a.py')),
12165
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   279
            ('lib.b', join(tempdir, 'b', '__init__.py')),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   280
            ('lib.b.a', join(tempdir, 'b', 'a.py')),
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   281
        ])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   282
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   283
    @templibdir
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   284
    def test_schema_modnames(self, libdir):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   285
        for filepath in (
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   286
            join(libdir, 'schema.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   287
            join(libdir, 'cubicweb_foo', '__init__.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   288
            join(libdir, 'cubicweb_foo', 'schema', '__init__.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   289
            join(libdir, 'cubicweb_foo', 'schema', 'a.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   290
            join(libdir, 'cubicweb_foo', 'schema', 'b.py'),
12165
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   291
            # subpackages should not be loaded
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   292
            join(libdir, 'cubicweb_foo', 'schema', 'c', '__init__.py'),
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   293
            join(libdir, '_instance_dir', 'data1', 'schema.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   294
            join(libdir, '_instance_dir', 'data2', 'noschema.py'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   295
        ):
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   296
            create_filepath(filepath)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   297
        expected = [
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   298
            ('cubicweb', 'cubicweb.schemas.bootstrap'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   299
            ('cubicweb', 'cubicweb.schemas.base'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   300
            ('cubicweb', 'cubicweb.schemas.workflow'),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   301
            ('cubicweb', 'cubicweb.schemas.Bookmark'),
12078
82d2c1cdf0c2 [cwconfig] don't rely on _CubeImporter while loading cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11966
diff changeset
   302
            ('foo', 'cubicweb_foo.schema'),
82d2c1cdf0c2 [cwconfig] don't rely on _CubeImporter while loading cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11966
diff changeset
   303
            ('foo', 'cubicweb_foo.schema.a'),
82d2c1cdf0c2 [cwconfig] don't rely on _CubeImporter while loading cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11966
diff changeset
   304
            ('foo', 'cubicweb_foo.schema.b'),
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   305
        ]
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   306
        # app has schema file
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
   307
        instance_dir = join(libdir, '_instance_dir')
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
   308
        with temp_config('data1', instance_dir, ('foo',)) as config:
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   309
            self.assertEqual(pkgutil.find_loader('schema').get_filename(),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   310
                             join(libdir, '_instance_dir',
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   311
                                  'data1', 'schema.py'))
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   312
            self.assertEqual(config.schema_modnames(),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   313
                             expected + [('data', 'schema')])
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   314
        # app doesn't have schema file
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
   315
        with temp_config('data2', instance_dir, ('foo',)) as config:
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   316
            self.assertEqual(pkgutil.find_loader('schema').get_filename(),
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   317
                             join(libdir, 'schema.py'))
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   318
            self.assertEqual(config.schema_modnames(), expected)
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   319
11900
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   320
    @templibdir
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   321
    def test_appobjects_modnames(self, libdir):
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   322
        for filepath in (
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   323
            join(libdir, 'entities.py'),
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   324
            join(libdir, 'cubicweb_foo', '__init__.py'),
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   325
            join(libdir, 'cubicweb_foo', 'entities', '__init__.py'),
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   326
            join(libdir, 'cubicweb_foo', 'entities', 'a.py'),
12165
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   327
            # subpackages should be loaded recursively
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   328
            join(libdir, 'cubicweb_foo', 'entities', 'b', '__init__.py'),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   329
            join(libdir, 'cubicweb_foo', 'entities', 'b', 'a.py'),
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   330
            join(libdir, 'cubicweb_foo', 'entities', 'b', 'c', '__init__.py'),
11900
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   331
            join(libdir, 'cubicweb_foo', 'hooks.py'),
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   332
            join(libdir, '_instance_dir', 'data1', 'entities.py'),
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   333
            join(libdir, '_instance_dir', 'data2', 'hooks.py'),
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   334
        ):
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   335
            create_filepath(filepath)
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
   336
        instance_dir = join(libdir, '_instance_dir')
11900
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   337
        expected = [
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   338
            'cubicweb.entities',
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   339
            'cubicweb.entities.adapters',
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   340
            'cubicweb.entities.authobjs',
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   341
            'cubicweb.entities.lib',
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   342
            'cubicweb.entities.schemaobjs',
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   343
            'cubicweb.entities.sources',
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   344
            'cubicweb.entities.wfobjs',
12078
82d2c1cdf0c2 [cwconfig] don't rely on _CubeImporter while loading cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11966
diff changeset
   345
            'cubicweb_foo.entities',
82d2c1cdf0c2 [cwconfig] don't rely on _CubeImporter while loading cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11966
diff changeset
   346
            'cubicweb_foo.entities.a',
12165
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   347
            'cubicweb_foo.entities.b',
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   348
            'cubicweb_foo.entities.b.a',
127f7da447a4 [cwconfig] load appobjects subpackages recursively
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12119
diff changeset
   349
            'cubicweb_foo.entities.b.c',
12078
82d2c1cdf0c2 [cwconfig] don't rely on _CubeImporter while loading cubes
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11966
diff changeset
   350
            'cubicweb_foo.hooks',
11900
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   351
        ]
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   352
        # data1 has entities
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
   353
        with temp_config('data1', instance_dir, ('foo',)) as config:
11900
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   354
            config.cube_appobject_path = set(['entities', 'hooks'])
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   355
            self.assertEqual(config.appobjects_modnames(),
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   356
                             expected + ['entities'])
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   357
        # data2 has hooks
12547
a11119d327e4 [test] make unittest_cwconfig.py does not depend on legacy cube machinery
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 12518
diff changeset
   358
        with temp_config('data2', instance_dir, ('foo',)) as config:
11900
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   359
            config.cube_appobject_path = set(['entities', 'hooks'])
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   360
            self.assertEqual(config.appobjects_modnames(),
8496135b6dc1 [cwvreg] load registry using modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11899
diff changeset
   361
                             expected + ['hooks'])
11899
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   362
bf6106b91633 [schema] load schema from modules names instead of directories
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 11744
diff changeset
   363
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
   364
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
   365
    unittest.main()