hghave: detect executable permission availability.
authorPatrick Mezard <pmezard@gmail.com>
Mon, 06 Aug 2007 10:26:04 +0200
changeset 5072 7e2385a31933
parent 5071 1b970cdab695
child 5073 4cd52978e188
hghave: detect executable permission availability.
tests/hghave
--- a/tests/hghave	Mon Aug 06 09:57:23 2007 +0200
+++ b/tests/hghave	Mon Aug 06 10:26:04 2007 +0200
@@ -5,6 +5,7 @@
 import optparse
 import os
 import sys
+import tempfile
 
 def has_symlink():
     return hasattr(os, "symlink")
@@ -12,9 +13,20 @@
 def has_fifo():
     return hasattr(os, "mkfifo")
 
+def has_executablebit():
+    fd, path = tempfile.mkstemp()
+    os.close(fd)
+    try:
+        s = os.lstat(path).st_mode
+        os.chmod(path, s | 0100)
+        return (os.lstat(path).st_mode & 0100 != 0)
+    finally:
+        os.remove(path)
+
 checks = {
     "symlink": (has_symlink, "symbolic links"),
     "fifo": (has_fifo, "named pipes"),
+    "execbit": (has_executablebit, "executable bit"),
 }
 
 def list_features():