tests/test-module-imports.t
author Augie Fackler <raf@durin42.com>
Sat, 14 Dec 2013 11:58:26 -0500
changeset 20173 40f79b9a2cc8
parent 20059 385e209377a6
child 20199 d87ed25733a1
permissions -rw-r--r--
test-module-imports: try and detect virtualenv breakage (issue4129) virtualenvs (among other things) break the stdlib module detection in the import checker, and I don't see a good way to work around that for now.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
20059
385e209377a6 test-module-imports: skip on Python < 2.6, since ast is new in 2.6
Augie Fackler <raf@durin42.com>
parents: 20039
diff changeset
     1
This code uses the ast module, which was new in 2.6, so we'll skip
385e209377a6 test-module-imports: skip on Python < 2.6, since ast is new in 2.6
Augie Fackler <raf@durin42.com>
parents: 20039
diff changeset
     2
this test on anything earlier.
385e209377a6 test-module-imports: skip on Python < 2.6, since ast is new in 2.6
Augie Fackler <raf@durin42.com>
parents: 20039
diff changeset
     3
  $ python -c 'import sys ; assert sys.version_info >= (2, 6)' || exit 80
385e209377a6 test-module-imports: skip on Python < 2.6, since ast is new in 2.6
Augie Fackler <raf@durin42.com>
parents: 20039
diff changeset
     4
20173
40f79b9a2cc8 test-module-imports: try and detect virtualenv breakage (issue4129)
Augie Fackler <raf@durin42.com>
parents: 20059
diff changeset
     5
Virtualenv has a habit of leaving BaseHTTPServer and other modules in
40f79b9a2cc8 test-module-imports: try and detect virtualenv breakage (issue4129)
Augie Fackler <raf@durin42.com>
parents: 20059
diff changeset
     6
a place where the import checker is confused about their nature as
40f79b9a2cc8 test-module-imports: try and detect virtualenv breakage (issue4129)
Augie Fackler <raf@durin42.com>
parents: 20059
diff changeset
     7
part of the stdlib. Skip the test if BaseHTTPServer's path isn't a
40f79b9a2cc8 test-module-imports: try and detect virtualenv breakage (issue4129)
Augie Fackler <raf@durin42.com>
parents: 20059
diff changeset
     8
subpath of sys.prefix.
40f79b9a2cc8 test-module-imports: try and detect virtualenv breakage (issue4129)
Augie Fackler <raf@durin42.com>
parents: 20059
diff changeset
     9
40f79b9a2cc8 test-module-imports: try and detect virtualenv breakage (issue4129)
Augie Fackler <raf@durin42.com>
parents: 20059
diff changeset
    10
  $ python -c 'import sys, BaseHTTPServer; assert BaseHTTPServer.__file__.startswith(sys.prefix)' || exit 80
40f79b9a2cc8 test-module-imports: try and detect virtualenv breakage (issue4129)
Augie Fackler <raf@durin42.com>
parents: 20059
diff changeset
    11
20039
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    12
  $ import_checker="$TESTDIR"/../contrib/import-checker.py
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    13
Run the doctests from the import checker, and make sure
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    14
it's working correctly.
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    15
  $ TERM=dumb
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    16
  $ export TERM
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    17
  $ python -m doctest $import_checker
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    18
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    19
  $ cd "$TESTDIR"/..
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    20
  $ if hg identify -q > /dev/null 2>&1; then :
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    21
  > else
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    22
  >     echo "skipped: not a Mercurial working dir" >&2
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    23
  >     exit 80
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    24
  > fi
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    25
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    26
There are a handful of cases here that require renaming a module so it
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    27
doesn't overlap with a stdlib module name. There are also some cycles
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    28
here that we should still endeavor to fix, and some cycles will be
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    29
hidden by deduplication algorithm in the cycle detector, so fixing
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    30
these may expose other cycles.
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    31
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    32
  $ hg locate 'mercurial/**.py' | xargs python "$import_checker"
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    33
  mercurial/dispatch.py mixed stdlib and relative imports:
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    34
     commands, error, extensions, fancyopts, hg, hook, util
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    35
  mercurial/fileset.py mixed stdlib and relative imports:
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    36
     error, merge, parser, util
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    37
  mercurial/revset.py mixed stdlib and relative imports:
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    38
     discovery, error, hbisect, parser, phases, util
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    39
  mercurial/templater.py mixed stdlib and relative imports:
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    40
     config, error, parser, templatefilters, util
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    41
  mercurial/ui.py mixed stdlib and relative imports:
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    42
     config, error, formatter, scmutil, util
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    43
  Import cycle: mercurial.cmdutil -> mercurial.subrepo -> mercurial.cmdutil
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    44
  Import cycle: mercurial.repoview -> mercurial.revset -> mercurial.repoview
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    45
  Import cycle: mercurial.fileset -> mercurial.merge -> mercurial.subrepo -> mercurial.match -> mercurial.fileset
05626e87489c test-module-imports.t: new test to use the import cycle detector
Augie Fackler <raf@durin42.com>
parents:
diff changeset
    46
  Import cycle: mercurial.filemerge -> mercurial.match -> mercurial.fileset -> mercurial.merge -> mercurial.filemerge