hgbook
diff en/examples/run-example @ 647:d0160b0b1a9e
Merge with http://hg.serpentine.com/mercurial/book
author | Dongsheng Song <dongsheng.song@gmail.com> |
---|---|
date | Wed Mar 18 20:32:37 2009 +0800 (2009-03-18) |
parents | 80928ea6e7ae |
children | a2923aa93da9 |
line diff
1.1 --- a/en/examples/run-example Tue Mar 17 21:47:12 2009 -0700 1.2 +++ b/en/examples/run-example Wed Mar 18 20:32:37 2009 +0800 1.3 @@ -7,6 +7,7 @@ 1.4 import cStringIO 1.5 import errno 1.6 import getopt 1.7 +import glob 1.8 import os 1.9 import pty 1.10 import re 1.11 @@ -54,15 +55,30 @@ 1.12 return None 1.13 1.14 def result_name(name): 1.15 - return os.path.join('results', name.replace(os.sep, '-')) 1.16 + return os.path.normpath(os.path.join('results', name.replace(os.sep, '-'))) 1.17 + 1.18 +def wopen(name): 1.19 + path = os.path.dirname(name) 1.20 + if path: 1.21 + try: 1.22 + os.makedirs(path) 1.23 + except OSError, err: 1.24 + if err.errno != errno.EEXIST: 1.25 + raise 1.26 + return open(name, 'w') 1.27 1.28 class example: 1.29 entities = dict.fromkeys(l.rstrip() for l in open('auto-snippets.xml')) 1.30 1.31 def __init__(self, name, verbose, keep_change): 1.32 - self.name = name 1.33 + self.name = os.path.normpath(name) 1.34 self.verbose = verbose 1.35 self.keep_change = keep_change 1.36 + 1.37 + def status(self, s): 1.38 + sys.stdout.write(s) 1.39 + if not s.endswith('\n'): 1.40 + sys.stdout.flush() 1.41 1.42 def rename_output(self, base, ignore=[]): 1.43 mangle_re = re.compile('(?:' + '|'.join(ignore) + ')') 1.44 @@ -97,7 +113,7 @@ 1.45 os.unlink(errname) 1.46 return False 1.47 else: 1.48 - print >> sys.stderr, '\nOutput of %s has changed!' % baseq 1.49 + print >> sys.stderr, '\nOutput of %s has changed!' % base 1.50 if self.keep_change: 1.51 os.rename(errname, oldname) 1.52 return False 1.53 @@ -105,18 +121,9 @@ 1.54 os.system('diff -u %s %s 1>&2' % (oldname, errname)) 1.55 return True 1.56 1.57 -def wopen(name): 1.58 - path = os.path.dirname(name) 1.59 - if path: 1.60 - try: 1.61 - os.makedirs(path) 1.62 - except OSError, err: 1.63 - if err.errno != errno.EEXIST: 1.64 - raise 1.65 - return open(name, 'w') 1.66 - 1.67 class static_example(example): 1.68 def run(self): 1.69 + self.status('running %s\n' % self.name) 1.70 s = open(self.name).read().rstrip() 1.71 s = s.replace('&', '&').replace('<', '<').replace('>', '>') 1.72 ofp = wopen(result_name(self.name + '.tmp')) 1.73 @@ -152,11 +159,6 @@ 1.74 yield cfp.getvalue() 1.75 cfp.seek(0) 1.76 cfp.truncate() 1.77 - 1.78 - def status(self, s): 1.79 - sys.stdout.write(s) 1.80 - if not s.endswith('\n'): 1.81 - sys.stdout.flush() 1.82 1.83 def send(self, s): 1.84 if self.verbose: