[PATCH STABLE V2] tests: run "cwd was removed" test only if cwd can actually be removed

Pierre-Yves David pierre-yves.david at ens-lyon.org
Fri Oct 28 04:23:57 EDT 2016



On 10/27/2016 02:24 PM, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1477489806 -32400
> #      Wed Oct 26 22:50:06 2016 +0900
> # Branch stable
> # Node ID e405867f4c8a3f77d81ac44aeb75b7b739222c64
> # Parent  b9f7b0c10027764cee77f9c6d61877fcffea837f
> tests: run "cwd was removed" test only if cwd can actually be removed

I've pushed that one. Thanks.

>
> On some platforms, cwd can't be removed. In which case, util.unlinkpath()
> continues with no error since the failure of directory removal isn't critical.
> So it doesn't make sense to run the test added by 90a6c18a7c1d on those
> platforms. OTOH, we need to run the test in test-rebase-scenario-global.t
> since the repository is referenced after that.
>
> diff --git a/tests/hghave.py b/tests/hghave.py
> --- a/tests/hghave.py
> +++ b/tests/hghave.py
> @@ -346,6 +346,21 @@ def has_hardlink():
>      finally:
>          os.unlink(fn)
>
> + at check("rmcwd", "can remove current working directory")
> +def has_rmcwd():
> +    ocwd = os.getcwd()
> +    temp = tempfile.mkdtemp(dir='.', prefix=tempprefix)
> +    try:
> +        os.chdir(temp)
> +        # On Linux, 'rmdir .' isn't allowed, but the other names are okay.
> +        # On Solaris and Windows, the cwd can't be removed by any names.
> +        os.rmdir(os.getcwd())
> +        return True
> +    except OSError:
> +        return False

Maybe we should check the errno here too? (as a followup)

Cheers,

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list