diff --git a/tests/hghave b/tests/hghave --- a/tests/hghave +++ b/tests/hghave @@ -5,6 +5,7 @@ if all features are there, non-zero othe import optparse import os import sys +import tempfile def has_symlink(): return hasattr(os, "symlink") @@ -12,9 +13,20 @@ def has_symlink(): 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():