Return to original directory after libbe.bugdir.SimpleBugDirTestCase().
authorW. Trevor King <wking@drexel.edu>
Fri, 31 Jul 2009 09:24:05 +0000 (05:24 -0400)
committerW. Trevor King <wking@drexel.edu>
Fri, 31 Jul 2009 09:24:05 +0000 (05:24 -0400)
commit3c4ce1b4519186007f2568569b1bff55cdbb108f
tree478f66bab1da7d30f1036254f020b6b618b17d85
parent11d3b00bf4c12446dafeb3cfde9d0ae40608a85d
Return to original directory after libbe.bugdir.SimpleBugDirTestCase().

This was causing strange "RCS not found" errors in the bzr and hg
unittests.  For example, the bzr tests all passed:
  wking@thor:be.wtk-rr$ python test.py bzr
  ...
  Ran 12 tests in 24.143s

  OK
Except when run after the bugdir tests:
  wking@thor:be.wtk-rr$ python test.py bugdir bzr
  ...
  Ran 19 tests in 1.862s

  FAILED (errors=12)
Where the failures were all
  AssertionError: bzr RCS not found

Fixed by returning to intial directory after SimpleBugDirTestCase
execution.  Problem is due to Python issues with unlinked directories
though, so bzr/hg will _still_ not work from unlinked directories.
This is for Python 2.5.4 on Ubuntu 8.04.3, but probably effects other
pythons too.

Details:

Isolated problem to unlinked directories:
  mkdir /tmp/a
  cd /tmp/a
  rmdir /tmp/a
  python /home/wking/src/fun/be/be.wtk-rr/test.py bzr
which fails with the same "RCS not found" errors because bzr fails:
  wking@thor:/$ mkdir /tmp/a; cd /tmp/a; rmdir /tmp/a; bzr --help; cd /;
  rmdir: removing directory, /tmp/a
  'import site' failed; use -v for traceback
  bzr: ERROR: Couldn't import bzrlib and dependencies.
  Please check bzrlib is on your PYTHONPATH.

  Traceback (most recent call last):
    File "/usr/bin/bzr", line 64, in <module>
      import bzrlib
  ImportError: No module named bzrlib
which fails becase 'import site' fails:
  wking@thor:/$ mkdir /tmp/a; cd /tmp/a; rmdir /tmp/a; python -c 'import site'; cd /;
  rmdir: removing directory, /tmp/a
  'import site' failed; use -v for traceback
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/home/wking/lib/python/site.py", line 73, in <module>
      __boot()
    File "/home/wking/lib/python/site.py", line 33, in __boot
      imp.load_module('site',stream,path,descr)
    File "/usr/lib/python2.5/site.py", line 408, in <module>
      main()
    File "/usr/lib/python2.5/site.py", line 392, in main
      paths_in_sys = removeduppaths()
    File "/usr/lib/python2.5/site.py", line 96, in removeduppaths
      dir, dircase = makepath(dir)
    File "/usr/lib/python2.5/site.py", line 72, in makepath
      dir = os.path.abspath(os.path.join(*paths))
    File "/usr/lib/python2.5/posixpath.py", line 403, in abspath
      path = join(os.getcwd(), path)
  OSError: [Errno 2] No such file or directory
which fails because our cwd doesn't exist.  That makes sense ;).
Still I think Python should be able to handle it, so I reported it
  http://bugs.python.org/issue6612
libbe/bugdir.py