# HG changeset patch # User Mads Kiilerich # Date 1350261192 -7200 # Node ID a3d0e19724c39ab09477df60ff9d05351a25ec99 # Parent c4e68bf38b1a3ce7c6f6eb1ace0bf7ce15b2921b run-tests: alternative way of handling \r on Windows After f71d60da58fb all \r was stripped from output on Windows, and the places where a \r explicitly was expected it was accepted that it was missing. Ugly hack. Instead we now accept that an extra \r might appear at the end of lines on Windows. That is more to the point and less ugly. [ original upstream message ] diff -r c4e68bf38b1a -r a3d0e19724c3 tests/run-tests.py --- a/tests/run-tests.py Thu Oct 18 22:12:15 2012 +0200 +++ b/tests/run-tests.py Mon Oct 15 02:33:12 2012 +0200 @@ -494,8 +494,10 @@ def rematch(el, l): try: - # ensure that the regex matches to the end of the string - return re.match(el + r'\Z', l) + # use \Z to ensure that the regex matches to the end of the string + if os.name == 'nt': + return re.match(el + r'\r?\n\Z', l) + return re.match(el + r'\n\Z', l) except re.error: # el is an invalid regex return False @@ -525,12 +527,12 @@ if el == l: # perfect match (fast) return True if (el and - (el.endswith(" (re)\n") and rematch(el[:-6] + '\n', l) or - el.endswith(" (glob)\n") and globmatch(el[:-8] + '\n', l) or + (el.endswith(" (re)\n") and rematch(el[:-6], l) or + el.endswith(" (glob)\n") and globmatch(el[:-8], l) or el.endswith(" (esc)\n") and (el[:-7].decode('string-escape') + '\n' == l or - el[:-7].decode('string-escape').replace('\r', '') + - '\n' == l and os.name == 'nt'))): + os.name == 'nt' and + el[:-7].decode('string-escape') + '\n' == l))): return True return False @@ -885,7 +887,6 @@ (r':%s\b' % (options.port + 2), ':$HGPORT2'), ] if os.name == 'nt': - replacements.append((r'\r\n', '\n')) replacements.append( (''.join(c.isalpha() and '[%s%s]' % (c.lower(), c.upper()) or c in '/\\' and r'[/\\]' or