posix: give the cached symlink a real target
The NamedTemporaryFile file is cleared up so checklink ends up as a dangling
symlink, causing cp -r in tests to complain on both Solaris and OS X. Use
a permanent file instead when there is a .hg/cache directory.
--- a/mercurial/posix.py Tue Nov 29 07:20:03 2016 -0800
+++ b/mercurial/posix.py Wed Nov 30 16:39:36 2016 +0000
@@ -231,10 +231,18 @@
cachedir = None
name = tempfile.mktemp(dir=checkdir, prefix='checklink-')
try:
- fd = tempfile.NamedTemporaryFile(dir=checkdir,
- prefix='hg-checklink-')
+ fd = None
+ if cachedir is None:
+ fd = tempfile.NamedTemporaryFile(dir=checkdir,
+ prefix='hg-checklink-')
+ target = os.path.basename(fd.name)
+ else:
+ # create a fixed file to link to; doesn't matter if it
+ # already exists.
+ target = 'checklink-target'
+ open(os.path.join(cachedir, target), 'w').close()
try:
- os.symlink(os.path.basename(fd.name), name)
+ os.symlink(target, name)
if cachedir is None:
os.unlink(name)
else:
@@ -249,7 +257,8 @@
continue
raise
finally:
- fd.close()
+ if fd is not None:
+ fd.close()
except AttributeError:
return False
except OSError as inst:
--- a/tests/test-clone.t Tue Nov 29 07:20:03 2016 -0800
+++ b/tests/test-clone.t Wed Nov 30 16:39:36 2016 +0000
@@ -33,6 +33,7 @@
branch2-served
checkisexec
checklink
+ checklink-target
checknoexec
rbc-names-v1
rbc-revs-v1
@@ -50,6 +51,7 @@
branch2-served
checkisexec
checklink
+ checklink-target
$ cat a
a
--- a/tests/test-hardlinks.t Tue Nov 29 07:20:03 2016 -0800
+++ b/tests/test-hardlinks.t Wed Nov 30 16:39:36 2016 +0000
@@ -212,6 +212,8 @@
2 r4/.hg/branch
2 r4/.hg/cache/branch2-served
2 r4/.hg/cache/checkisexec
+ 3 r4/.hg/cache/checklink (?)
+ ? r4/.hg/cache/checklink-target (glob)
2 r4/.hg/cache/checknoexec
2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
@@ -250,6 +252,7 @@
1 r4/.hg/branch
2 r4/.hg/cache/branch2-served
2 r4/.hg/cache/checkisexec
+ 2 r4/.hg/cache/checklink-target
2 r4/.hg/cache/checknoexec
2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
--- a/tests/test-tags.t Tue Nov 29 07:20:03 2016 -0800
+++ b/tests/test-tags.t Wed Nov 30 16:39:36 2016 +0000
@@ -674,6 +674,7 @@
branch2-served
checkisexec
checklink
+ checklink-target
hgtagsfnodes1
rbc-names-v1
rbc-revs-v1
@@ -700,6 +701,7 @@
branch2-served
checkisexec
checklink
+ checklink-target
hgtagsfnodes1
rbc-names-v1
rbc-revs-v1