tests: introduce hghave hardlinks
authorMads Kiilerich <mads@kiilerich.com>
Fri, 15 Jun 2012 00:02:27 +0200
changeset 16971 8aeb2f1ae94c
parent 16970 8be2a28cc782
child 16972 5efe9c6a34fe
tests: introduce hghave hardlinks Some tests can't be run on FAT filesystems because it doesn't support hardlinks.
tests/hghave.py
tests/test-clone.t
tests/test-contrib.t
tests/test-hardlinks.t
tests/test-relink.t
--- 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