[jhbuild/ci-tests: 2/5] Break up an import cycle preventing tests from importing



commit c0f57d91d0f8edcf84af71b6418473cd92f23360
Author: Christoph Reiter <reiter christoph gmail com>
Date:   Sat Sep 21 14:02:59 2019 +0200

    Break up an import cycle preventing tests from importing
    
    When importing modtypes first it ended up importing itself.
    Move the inpath() function into its own module to break
    the cycle.

 .flake8                          |  2 +-
 jhbuild/commands/sanitycheck.py  | 10 +---------
 jhbuild/modtypes/__init__.py     |  2 +-
 jhbuild/modtypes/cmake.py        |  2 +-
 jhbuild/modtypes/meson.py        |  3 +--
 jhbuild/modtypes/waf.py          |  2 +-
 jhbuild/utils/Makefile.am        |  1 +
 jhbuild/utils/__init__.py        |  2 ++
 jhbuild/utils/misc.py            | 26 ++++++++++++++++++++++++++
 jhbuild/versioncontrol/bzr.py    |  2 +-
 jhbuild/versioncontrol/cvs.py    |  2 +-
 jhbuild/versioncontrol/darcs.py  |  2 +-
 jhbuild/versioncontrol/fossil.py |  2 +-
 jhbuild/versioncontrol/git.py    |  2 +-
 jhbuild/versioncontrol/hg.py     |  2 +-
 jhbuild/versioncontrol/mtn.py    |  2 +-
 jhbuild/versioncontrol/svn.py    |  2 +-
 17 files changed, 43 insertions(+), 23 deletions(-)
---
diff --git a/.flake8 b/.flake8
index a8bfd02c..f0e47686 100644
--- a/.flake8
+++ b/.flake8
@@ -1,5 +1,5 @@
 [flake8]
-ignore=E122,E402,E126,E128,F401,E401,W504,W503,E201,E302,E305,E251,E203,E124,E231,W293,E261,E221,E211,E502,E722,W391,E301,E202,E225,E227,W291,E303,E226,E131,E123,E241
+ignore=E122,E402,E126,E128,F401,E401,W504,W503,E201,E302,E305,E251,E203,E124,E231,W293,E261,E221,E211,E502,E722,W391,E301,E202,E225,E227,W291,E303,E226,E131,E123,E241,W292
 max-line-length=160
 builtins=SRCDIR,_,N_,uencode,uprint,PKGDATADIR,DATADIR,udecode
 exclude=jhbuild/modtypes/linux.py
\ No newline at end of file
diff --git a/jhbuild/commands/sanitycheck.py b/jhbuild/commands/sanitycheck.py
index 0242ab31..e8597c89 100644
--- a/jhbuild/commands/sanitycheck.py
+++ b/jhbuild/commands/sanitycheck.py
@@ -23,6 +23,7 @@ import re
 
 from jhbuild.commands import Command, register_command
 from jhbuild.utils.cmds import get_output, check_version
+from jhbuild.utils import inpath
 from jhbuild.errors import UsageError, CommandError
 
 def get_aclocal_path():
@@ -32,15 +33,6 @@ def get_aclocal_path():
     path.append(data[:-1])
     return path
 
-def inpath(filename, path):
-    for dir in path:
-        if os.path.isfile(os.path.join(dir, filename)):
-            return True
-        # also check for filename.exe on Windows
-        if sys.platform.startswith('win') and os.path.isfile(os.path.join(dir, filename + '.exe')):
-            return True
-    return False
-
 
 class cmd_sanitycheck(Command):
     doc = N_('Check that required support tools are available')
diff --git a/jhbuild/modtypes/__init__.py b/jhbuild/modtypes/__init__.py
index f8a8b473..7612c071 100644
--- a/jhbuild/modtypes/__init__.py
+++ b/jhbuild/modtypes/__init__.py
@@ -35,7 +35,7 @@ import logging
 from jhbuild.errors import FatalError, CommandError, BuildStateError, \
              SkipToEnd, UndefinedRepositoryError
 from jhbuild.utils.sxml import sxml
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 import jhbuild.utils.fileutils as fileutils
 
 _module_types = {}
diff --git a/jhbuild/modtypes/cmake.py b/jhbuild/modtypes/cmake.py
index 222a9f4f..917d33b4 100644
--- a/jhbuild/modtypes/cmake.py
+++ b/jhbuild/modtypes/cmake.py
@@ -26,7 +26,7 @@ from jhbuild.errors import BuildStateError, CommandError
 from jhbuild.modtypes import \
      Package, DownloadableModule, register_module_type, MakeModule, NinjaModule
 from jhbuild.modtypes.autotools import collect_args
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 
 __all__ = [ 'CMakeModule' ]
 
diff --git a/jhbuild/modtypes/meson.py b/jhbuild/modtypes/meson.py
index e4912f65..b56e92bb 100644
--- a/jhbuild/modtypes/meson.py
+++ b/jhbuild/modtypes/meson.py
@@ -26,8 +26,7 @@ from jhbuild.errors import BuildStateError, CommandError
 from jhbuild.modtypes import \
      Package, DownloadableModule, register_module_type, NinjaModule
 from jhbuild.modtypes.autotools import collect_args
-from jhbuild.commands.sanitycheck import inpath
-from jhbuild.utils import fileutils
+from jhbuild.utils import inpath, fileutils
 
 __all__ = [ 'MesonModule' ]
 
diff --git a/jhbuild/modtypes/waf.py b/jhbuild/modtypes/waf.py
index 9bd09b8b..cbc194cf 100644
--- a/jhbuild/modtypes/waf.py
+++ b/jhbuild/modtypes/waf.py
@@ -27,7 +27,7 @@ import re
 from jhbuild.errors import FatalError, BuildStateError, CommandError
 from jhbuild.modtypes import \
      Package, DownloadableModule, register_module_type
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 
 __all__ = [ 'WafModule' ]
 
diff --git a/jhbuild/utils/Makefile.am b/jhbuild/utils/Makefile.am
index ffe0fd74..1a7f4ec7 100644
--- a/jhbuild/utils/Makefile.am
+++ b/jhbuild/utils/Makefile.am
@@ -6,6 +6,7 @@ app_PYTHON = \
        compat.py \
        fileutils.py \
        httpcache.py \
+       misc.py \
        notify.py \
        packagedb.py \
        sxml.py \
diff --git a/jhbuild/utils/__init__.py b/jhbuild/utils/__init__.py
index a4e89dbf..8fd78b70 100644
--- a/jhbuild/utils/__init__.py
+++ b/jhbuild/utils/__init__.py
@@ -16,3 +16,5 @@
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+from .misc import inpath
\ No newline at end of file
diff --git a/jhbuild/utils/misc.py b/jhbuild/utils/misc.py
new file mode 100644
index 00000000..9d33aa85
--- /dev/null
+++ b/jhbuild/utils/misc.py
@@ -0,0 +1,26 @@
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+import os
+import sys
+
+
+def inpath(filename, path):
+    for dir in path:
+        if os.path.isfile(os.path.join(dir, filename)):
+            return True
+        # also check for filename.exe on Windows
+        if sys.platform.startswith('win') and os.path.isfile(os.path.join(dir, filename + '.exe')):
+            return True
+    return False
\ No newline at end of file
diff --git a/jhbuild/versioncontrol/bzr.py b/jhbuild/versioncontrol/bzr.py
index 1d0f0859..b93c74f0 100644
--- a/jhbuild/versioncontrol/bzr.py
+++ b/jhbuild/versioncontrol/bzr.py
@@ -28,7 +28,7 @@ import logging
 from jhbuild.errors import FatalError, CommandError
 from jhbuild.utils.cmds import get_output
 from jhbuild.versioncontrol import Repository, Branch, register_repo_type
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 from jhbuild.utils.sxml import sxml
 
 # Make sure that the urlparse module considers bzr://, bzr+ssh://, sftp:// and lp:
diff --git a/jhbuild/versioncontrol/cvs.py b/jhbuild/versioncontrol/cvs.py
index 28fa2536..bb545c5b 100644
--- a/jhbuild/versioncontrol/cvs.py
+++ b/jhbuild/versioncontrol/cvs.py
@@ -34,7 +34,7 @@ import git
 
 from jhbuild.errors import BuildStateError, CommandError
 from jhbuild.versioncontrol import Repository, Branch, register_repo_type
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 from jhbuild.utils.sxml import sxml
 
 
diff --git a/jhbuild/versioncontrol/darcs.py b/jhbuild/versioncontrol/darcs.py
index c212808c..4650c238 100644
--- a/jhbuild/versioncontrol/darcs.py
+++ b/jhbuild/versioncontrol/darcs.py
@@ -30,7 +30,7 @@ except ImportError:
 
 from jhbuild.errors import FatalError, CommandError
 from jhbuild.versioncontrol import Repository, Branch, register_repo_type
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 
 class DarcsRepository(Repository):
     """A class representing a Darcs repository.
diff --git a/jhbuild/versioncontrol/fossil.py b/jhbuild/versioncontrol/fossil.py
index dd402334..0708a132 100644
--- a/jhbuild/versioncontrol/fossil.py
+++ b/jhbuild/versioncontrol/fossil.py
@@ -28,7 +28,7 @@ from subprocess import Popen, PIPE
 
 from jhbuild.errors import FatalError, CommandError
 from jhbuild.versioncontrol import Repository, Branch, register_repo_type
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 
 class FossilRepository(Repository):
     """A class representing a Fossil repository."""
diff --git a/jhbuild/versioncontrol/git.py b/jhbuild/versioncontrol/git.py
index ea05413d..2670719f 100644
--- a/jhbuild/versioncontrol/git.py
+++ b/jhbuild/versioncontrol/git.py
@@ -34,7 +34,7 @@ from jhbuild.errors import FatalError, CommandError
 from jhbuild.utils.cmds import get_output, check_version
 from jhbuild.versioncontrol import Repository, Branch, register_repo_type
 import jhbuild.versioncontrol.svn
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 from jhbuild.utils.sxml import sxml
 
 # Make sure that the urlparse module considers git:// and git+ssh://
diff --git a/jhbuild/versioncontrol/hg.py b/jhbuild/versioncontrol/hg.py
index cef7d7a3..5a2ca2f7 100644
--- a/jhbuild/versioncontrol/hg.py
+++ b/jhbuild/versioncontrol/hg.py
@@ -28,7 +28,7 @@ from subprocess import Popen, PIPE
 
 from jhbuild.errors import FatalError, CommandError
 from jhbuild.versioncontrol import Repository, Branch, register_repo_type
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 
 class HgRepository(Repository):
     """A class representing a Mercurial repository.
diff --git a/jhbuild/versioncontrol/mtn.py b/jhbuild/versioncontrol/mtn.py
index 5f9becb2..a964954a 100644
--- a/jhbuild/versioncontrol/mtn.py
+++ b/jhbuild/versioncontrol/mtn.py
@@ -26,7 +26,7 @@ import os
 from jhbuild.errors import CommandError, FatalError
 from jhbuild.utils.cmds import get_output
 from jhbuild.versioncontrol import Repository, Branch, register_repo_type
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 
 class MonotoneRepository(Repository):
     """A class representing a Monotone database."""
diff --git a/jhbuild/versioncontrol/svn.py b/jhbuild/versioncontrol/svn.py
index d61d0090..d6c56f75 100644
--- a/jhbuild/versioncontrol/svn.py
+++ b/jhbuild/versioncontrol/svn.py
@@ -29,7 +29,7 @@ import subprocess
 from jhbuild.errors import CommandError, BuildStateError
 from jhbuild.utils.cmds import get_output, check_version
 from jhbuild.versioncontrol import Repository, Branch, register_repo_type
-from jhbuild.commands.sanitycheck import inpath
+from jhbuild.utils import inpath
 from jhbuild.utils.sxml import sxml
 
 import bzr, git


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]