Turbogears2 migration: tests: "cannot import name meta"

Mads Kiilerich mads at kiilerich.com
Sat Sep 24 22:17:16 UTC 2016


On 09/23/2016 09:42 PM, Thomas De Schampheleire wrote:
> After rebasing the tg2 branch onto recent Kallithea default, more
> particularly onto something containing this commit:
>
> o  6613 8d98924c58b1 default  2016-09-18 Thomas De Schampheleire
> tests: add as little code as possible in __init__.py
>
> I can no longer successfully start the test suite.
> I get an import error: "cannot import name meta", which refers to some
> import of kallithea.model.meta.

The error goes like:

E     File "/home/madski/kallithea-tg2/kallithea/tests/conftest.py", 
line 12, in <module>
E       from kallithea.model.user import UserModel
E     File "/home/madski/kallithea-tg2/kallithea/model/__init__.py", 
line 48, in <module>
E       from kallithea.model import meta
E     File "/home/madski/kallithea-tg2/kallithea/model/meta.py", line 
21, in <module>
E       from kallithea.lib import caching_query
E     File "/home/madski/kallithea-tg2/kallithea/lib/__init__.py", line 
27, in <module>
E       from . import helpers
E     File "/home/madski/kallithea-tg2/kallithea/lib/helpers.py", line 
56, in <module>
E       from kallithea.lib.utils import repo_name_slug, get_custom_lexer
E     File "/home/madski/kallithea-tg2/kallithea/lib/utils.py", line 50, 
in <module>
E       from kallithea.model import meta

So again, we have a recursive dependency. Random changes can influence 
whether that works or not.

Removing more imports from __init__ would be a good start ... though not 
necessarily sufficient to remove recursive imports.

A stupid workaround (and some fixes to merge conflicts):

diff --git a/kallithea/tests/conftest.py b/kallithea/tests/conftest.py
--- a/kallithea/tests/conftest.py
+++ b/kallithea/tests/conftest.py
@@ -11,2 +11,3 @@ from tg.util.webtest import test_context
  import pytest
+import kallithea.lib.helpers # HACK to workaround recursive imports ...
  from kallithea.model.user import UserModel
diff --git a/kallithea/config/app_cfg.py b/kallithea/config/app_cfg.py
--- a/kallithea/config/app_cfg.py
+++ b/kallithea/config/app_cfg.py
@@ -128,3 +128,3 @@ def setup_configuration(app):
          from kallithea.lib.utils import create_test_env, create_test_index
-        from kallithea.tests import TESTS_TMP_PATH
+        from kallithea.tests.base import TESTS_TMP_PATH
          #set KALLITHEA_NO_TMP_PATH=1 to disable re-creating the 
database and
@@ -137,4 +137,2 @@ def setup_configuration(app):

-    DbManage.check_waitress()
-
      set_available_permissions(config)

/Mads


More information about the kallithea-general mailing list