Patchwork [8,of,8,v2] test-module-imports.t: new test to use the import cycle detector

login
register
mail settings
Submitter Augie Fackler
Date Nov. 17, 2013, 9:37 p.m.
Message ID <40f0611e79bbedb2b703.1384724246@hit-nxdomain.opendns.com>
Download mbox | patch
Permalink /patch/3042/
State Accepted
Commit 05626e87489ce6514b911eaf647586119a5563d0
Headers show

Comments

Augie Fackler - Nov. 17, 2013, 9:37 p.m.
# HG changeset patch
# User Augie Fackler <raf@durin42.com>
# Date 1384713515 18000
#      Sun Nov 17 13:38:35 2013 -0500
# Node ID 40f0611e79bbedb2b7038b2bb5989a8331126051
# Parent  37732daba197e51ad201cb6b07796a9c1e7cd878
test-module-imports.t: new test to use the import cycle detector

Patch

diff --git a/tests/test-module-imports.t b/tests/test-module-imports.t
new file mode 100644
--- /dev/null
+++ b/tests/test-module-imports.t
@@ -0,0 +1,35 @@ 
+  $ import_checker="$TESTDIR"/../contrib/import-checker.py
+Run the doctests from the import checker, and make sure
+it's working correctly.
+  $ TERM=dumb
+  $ export TERM
+  $ python -m doctest $import_checker
+
+  $ cd "$TESTDIR"/..
+  $ if hg identify -q > /dev/null 2>&1; then :
+  > else
+  >     echo "skipped: not a Mercurial working dir" >&2
+  >     exit 80
+  > fi
+
+There are a handful of cases here that require renaming a module so it
+doesn't overlap with a stdlib module name. There are also some cycles
+here that we should still endeavor to fix, and some cycles will be
+hidden by deduplication algorithm in the cycle detector, so fixing
+these may expose other cycles.
+
+  $ hg locate 'mercurial/**.py' | xargs python "$import_checker"
+  mercurial/dispatch.py mixed stdlib and relative imports:
+     commands, error, extensions, fancyopts, hg, hook, util
+  mercurial/fileset.py mixed stdlib and relative imports:
+     error, merge, parser, util
+  mercurial/revset.py mixed stdlib and relative imports:
+     discovery, error, hbisect, parser, phases, util
+  mercurial/templater.py mixed stdlib and relative imports:
+     config, error, parser, templatefilters, util
+  mercurial/ui.py mixed stdlib and relative imports:
+     config, error, formatter, scmutil, util
+  Import cycle: mercurial.cmdutil -> mercurial.subrepo -> mercurial.cmdutil
+  Import cycle: mercurial.repoview -> mercurial.revset -> mercurial.repoview
+  Import cycle: mercurial.fileset -> mercurial.merge -> mercurial.subrepo -> mercurial.match -> mercurial.fileset
+  Import cycle: mercurial.filemerge -> mercurial.match -> mercurial.fileset -> mercurial.merge -> mercurial.filemerge