Mercurial > hg-stable
view tests/hghave @ 5137:2be225ea5722
extdiff: do single file diffs from the wc with no copy
Extdiff was always making a temporary directory and copying files even when not required. This change makes extdiff avoid the copy when diffing a single file that lives in the wc. This lets external diff tools edit the working copy file directly. It also lets other extensions resuse the functions in extdiff and get in-place diffs.
author | Brad Schick <schickb@gmail.com> |
---|---|
date | Mon, 06 Aug 2007 14:50:57 -0700 |
parents | e86788af599a |
children | ea7b982b6c08 |
line wrap: on
line source
#!/usr/bin/env python """Test the running system for features availability. Exit with zero if all features are there, non-zero otherwise. """ import optparse import os import sys import tempfile def has_symlink(): return hasattr(os, "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) def has_eol_in_paths(): try: fd, path = tempfile.mkstemp(suffix='\n\r') os.close(fd) os.remove(path) return True except: return False checks = { "symlink": (has_symlink, "symbolic links"), "fifo": (has_fifo, "named pipes"), "execbit": (has_executablebit, "executable bit"), "eol-in-paths": (has_eol_in_paths, "end-of-lines in paths"), } def list_features(): for name, feature in checks.iteritems(): desc = feature[1] print name + ':', desc parser = optparse.OptionParser("%prog [options] [features]") parser.add_option("--list-features", action="store_true", help="list available features") parser.add_option("-q", "--quiet", action="store_true", help="check features silently") if __name__ == '__main__': options, args = parser.parse_args() if options.list_features: list_features() sys.exit(0) quiet = options.quiet failures = 0 def error(msg): global failures if not quiet: sys.stderr.write(msg + '\n') failures += 1 for feature in args: if feature not in checks: error('hghave: unknown feature: ' + feature) continue check, desc = checks[feature] if not check(): error('hghave: missing feature: ' + desc) if failures != 0: sys.exit(1)