equal
deleted
inserted
replaced
452 def shtest(test, options, replacements): |
452 def shtest(test, options, replacements): |
453 cmd = '"%s"' % test |
453 cmd = '"%s"' % test |
454 vlog("# Running", cmd) |
454 vlog("# Running", cmd) |
455 return run(cmd, options, replacements) |
455 return run(cmd, options, replacements) |
456 |
456 |
|
457 needescape = re.compile(r'[\x00-\x08\x0b-\x1f\x7f-\xff]').search |
|
458 escapesub = re.compile(r'[\x00-\x08\x0b-\x1f\\\x7f-\xff]').sub |
|
459 escapemap = dict((chr(i), r'\x%02x' % i) for i in range(256)) |
|
460 escapemap.update({'\\': '\\\\', '\r': r'\r'}) |
|
461 def escapef(m): |
|
462 return escapemap[m.group(0)] |
|
463 def stringescape(s): |
|
464 return escapesub(escapef, s) |
|
465 |
457 def tsttest(test, options, replacements): |
466 def tsttest(test, options, replacements): |
458 t = open(test) |
467 t = open(test) |
459 out = [] |
468 out = [] |
460 script = [] |
469 script = [] |
461 salt = "SALT" + str(time.time()) |
470 salt = "SALT" + str(time.time()) |
543 if pos in expected and expected[pos]: |
552 if pos in expected and expected[pos]: |
544 el = expected[pos].pop(0) |
553 el = expected[pos].pop(0) |
545 |
554 |
546 if el == lout: # perfect match (fast) |
555 if el == lout: # perfect match (fast) |
547 postout.append(" " + lout) |
556 postout.append(" " + lout) |
548 elif el and el.decode('string-escape') == l: |
|
549 postout.append(" " + el) # \-escape match |
|
550 elif (el and |
557 elif (el and |
551 (el.endswith(" (re)\n") and rematch(el[:-6] + '\n', lout) or |
558 (el.endswith(" (re)\n") and rematch(el[:-6] + '\n', lout) or |
552 el.endswith(" (glob)\n") and globmatch(el[:-8] + '\n', lout))): |
559 el.endswith(" (glob)\n") and globmatch(el[:-8] + '\n', lout)) or |
553 postout.append(" " + el) # fallback regex/glob match |
560 el.endswith(" (esc)\n") and el.decode('string-escape') == l): |
|
561 postout.append(" " + el) # fallback regex/glob/esc match |
554 else: |
562 else: |
|
563 if needescape(lout): |
|
564 lout = stringescape(lout.rstrip('\n')) + " (esc)\n" |
555 postout.append(" " + lout) # let diff deal with it |
565 postout.append(" " + lout) # let diff deal with it |
556 |
566 |
557 if lcmd: |
567 if lcmd: |
558 # add on last return code |
568 # add on last return code |
559 ret = int(lcmd.split()[1]) |
569 ret = int(lcmd.split()[1]) |