tests: introduce hghave hardlinks
Some tests can't be run on FAT filesystems because it doesn't support
hardlinks.
--- a/tests/hghave.py Fri Jun 15 00:02:27 2012 +0200
+++ b/tests/hghave.py Fri Jun 15 00:02:27 2012 +0200
@@ -189,6 +189,21 @@
except (OSError, AttributeError):
return False
+def has_hardlink():
+ from mercurial import util
+ fh, fn = tempfile.mkstemp(dir='.', prefix=tempprefix)
+ os.close(fh)
+ name = tempfile.mktemp(dir='.', prefix=tempprefix)
+ try:
+ try:
+ util.oslink(fn, name)
+ os.unlink(name)
+ return True
+ except OSError:
+ return False
+ finally:
+ os.unlink(fn)
+
def has_tla():
return matchoutput('tla --version 2>&1', r'The GNU Arch Revision')
@@ -266,6 +281,7 @@
"gettext": (has_gettext, "GNU Gettext (msgfmt)"),
"git": (has_git, "git command line client"),
"gpg": (has_gpg, "gpg client"),
+ "hardlink": (has_hardlink, "hardlinks"),
"icasefs": (has_icasefs, "case insensitive file system"),
"inotify": (has_inotify, "inotify extension support"),
"lsprof": (has_lsprof, "python lsprof module"),
--- a/tests/test-clone.t Fri Jun 15 00:02:27 2012 +0200
+++ b/tests/test-clone.t Fri Jun 15 00:02:27 2012 +0200
@@ -48,8 +48,13 @@
No update, with debug option:
+#if hardlink
$ hg --debug clone -U . ../c
linked 8 files
+#else
+ $ hg --debug clone -U . ../c
+ copied 8 files
+#endif
$ cd ../c
$ cat a 2>/dev/null || echo "a not present"
a not present
--- a/tests/test-contrib.t Fri Jun 15 00:02:27 2012 +0200
+++ b/tests/test-contrib.t Fri Jun 15 00:02:27 2012 +0200
@@ -104,6 +104,8 @@
[1]
+#if hardlink
+
Test shrink-revlog:
$ cd repo-a
$ hg --config extensions.shrink="$CONTRIBDIR/shrink-revlog.py" shrink
@@ -127,6 +129,8 @@
1 files, 3 changesets, 3 total revisions
$ cd ..
+#endif
+
Test simplemerge command:
$ cp "$CONTRIBDIR/simplemerge" .
--- a/tests/test-hardlinks.t Fri Jun 15 00:02:27 2012 +0200
+++ b/tests/test-hardlinks.t Fri Jun 15 00:02:27 2012 +0200
@@ -1,3 +1,5 @@
+ $ "$TESTDIR/hghave" hardlink || exit 80
+
$ cat > nlinks.py <<EOF
> import sys
> from mercurial import util
--- a/tests/test-relink.t Fri Jun 15 00:02:27 2012 +0200
+++ b/tests/test-relink.t Fri Jun 15 00:02:27 2012 +0200
@@ -1,3 +1,5 @@
+ $ "$TESTDIR/hghave" hardlink || exit 80
+
$ echo "[extensions]" >> $HGRCPATH
$ echo "relink=" >> $HGRCPATH