Submitter | Yuya Nishihara |
---|---|
Date | Oct. 26, 2016, 2:11 p.m. |
Message ID | <d389b88b942adb330819.1477491086@mimosa> |
Download | mbox | patch |
Permalink | /patch/17196/ |
State | Superseded |
Headers | show |
Comments
Yuya Nishihara wrote: > # HG changeset patch > # User Yuya Nishihara <yuya@tcha.org> > # Date 1477489806 -32400 > # Wed Oct 26 22:50:06 2016 +0900 > # Branch stable > # Node ID d389b88b942adb330819437ef46d1b9acb4392d7 > # Parent b9f7b0c10027764cee77f9c6d61877fcffea837f > tests: run "cwd was removed" test only if cwd can actually be removed > > On some platforms, cwd can't be removed. In which case, util.unlinkpath() > continues with no error since the failure isn't critical. The problem here is a bit more specific: while Linux (for example) prevents you from removing cwd when referring to it as ".", Solaris prevents you from removing it under all names. So because that failure isn't critical, the cwd ends up remaining behind on Solaris because it's done via the full path. It might make sense to be more specific in the name, too, though I'm not sure what to suggest. There's also a second test that has some related output: --- a/tests/test-rebase-scenario-global.t +++ b/tests/test-rebase-scenario-global.t @@ -758,8 +758,6 @@ Test that rebase is not confused by $CWD $ hg commit -m 'second source with subdir' $ hg rebase -b . -d 1 --traceback rebasing 2:779a07b1b7a0 "first source commit" - current directory was removed - (consider changing to repo root: $TESTTMP/cwd-vanish) rebasing 3:a7d6f3a00bf3 "second source with subdir" (tip) saved backup bundle to $TESTTMP/cwd-vanish/.hg/strip-backup/779a07b1b7a0-853e0073-backup.hg (glob) is what I had to remove temporarily. Thanks, Danek
On Wed, 26 Oct 2016 07:39:14 -0700, Danek Duvall wrote: > Yuya Nishihara wrote: > > > # HG changeset patch > > # User Yuya Nishihara <yuya@tcha.org> > > # Date 1477489806 -32400 > > # Wed Oct 26 22:50:06 2016 +0900 > > # Branch stable > > # Node ID d389b88b942adb330819437ef46d1b9acb4392d7 > > # Parent b9f7b0c10027764cee77f9c6d61877fcffea837f > > tests: run "cwd was removed" test only if cwd can actually be removed > > > > On some platforms, cwd can't be removed. In which case, util.unlinkpath() > > continues with no error since the failure isn't critical. > > The problem here is a bit more specific: while Linux (for example) prevents > you from removing cwd when referring to it as ".", Solaris prevents you > from removing it under all names. So because that failure isn't critical, > the cwd ends up remaining behind on Solaris because it's done via the full > path. It might make sense to be more specific in the name, too, though I'm > not sure what to suggest. Yes, 'rmdir .' is prevented even on Linux. Since I have no better name, I just added some comments. > There's also a second test that has some related output: > > --- a/tests/test-rebase-scenario-global.t > +++ b/tests/test-rebase-scenario-global.t > @@ -758,8 +758,6 @@ Test that rebase is not confused by $CWD > $ hg commit -m 'second source with subdir' > $ hg rebase -b . -d 1 --traceback > rebasing 2:779a07b1b7a0 "first source commit" > - current directory was removed > - (consider changing to repo root: $TESTTMP/cwd-vanish) > rebasing 3:a7d6f3a00bf3 "second source with subdir" (tip) > saved backup bundle to $TESTTMP/cwd-vanish/.hg/strip-backup/779a07b1b7a0-853e0073-backup.hg (glob) Oops, fixed in V2.
Patch
diff --git a/tests/hghave.py b/tests/hghave.py --- a/tests/hghave.py +++ b/tests/hghave.py @@ -346,6 +346,19 @@ def has_hardlink(): finally: os.unlink(fn) +@check("rmcwd", "can remove current working directory") +def has_rmcwd(): + ocwd = os.getcwd() + temp = tempfile.mkdtemp(dir='.', prefix=tempprefix) + try: + os.chdir(temp) + os.rmdir(os.getcwd()) + return True + except OSError: + return False + finally: + os.chdir(ocwd) + @check("tla", "GNU Arch tla client") def has_tla(): return matchoutput('tla --version 2>&1', br'The GNU Arch Revision') diff --git a/tests/test-update-names.t b/tests/test-update-names.t --- a/tests/test-update-names.t +++ b/tests/test-update-names.t @@ -73,6 +73,8 @@ Test update when two commits have symlin #endif +#if rmcwd + Test that warning is printed if cwd is deleted during update $ hg init r4 && cd r4 $ mkdir dir @@ -84,3 +86,5 @@ Test that warning is printed if cwd is d $ hg up -q null current directory was removed (consider changing to repo root: $TESTTMP/r1/r4) + +#endif