Correct for possible directory changes in mercurial.dispatch.dispatch()
authorW. Trevor King <wking@drexel.edu>
Wed, 30 Dec 2009 02:37:14 +0000 (21:37 -0500)
committerW. Trevor King <wking@drexel.edu>
Wed, 30 Dec 2009 02:37:14 +0000 (21:37 -0500)
I ran across this when the hg unittests broke the vcs.base unittests:
  $ python test.py libbe.storage.vcs.base libbe.storage.vcs.hg
  ...
  OK
  $ python test.py libbe.storage.vcs.hg libbe.storage.vcs.base
  ...
  File ".../libbe/storage/vcs/base.py", line 914, in libbe.storage.vcs.base.VCSTestCase.Class._u_rel_path
  Failed example:
      vcs._u_rel_path("./a", ".")
  Exception raised:
      Traceback (most recent call last):
        File "/usr/lib/python2.5/doctest.py", line 1228, in __run
          compileflags, 1) in test.globs
        File "<doctest libbe.storage.vcs.base.VCSTestCase.Class._u_rel_path[4]>", line 1, in <module>
          vcs._u_rel_path("./a", ".")
        File ".../libbe/storage/vcs/base.py", line 921, in _u_rel_path
          path = os.path.abspath(path)
        File "/usr/lib/python2.5/posixpath.py", line 403, in abspath
          path = join(os.getcwd(), path)
      OSError: [Errno 2] No such file or directory
  ...
  FAILED (failures=1)

libbe/storage/vcs/hg.py

index b280ff270f67385992135693f529e0171d33ac67..11494a94a91a547d21e9ab6b5639b8f07ce40e33 100644 (file)
@@ -70,7 +70,9 @@ class Hg(base.VCS):
         stdout = sys.stdout
         tmp_stdout = StringIO.StringIO()
         sys.stdout = tmp_stdout
+        cwd = os.getcwd()
         mercurial.dispatch.dispatch(fullargs)
+        os.chdir(cwd)
         sys.stdout = stdout
         return tmp_stdout.getvalue().rstrip('\n')