On 01/04/13 01:31, Daniel Shahaf wrote:
I reworked hunk 2 because I found a bug.
The actual problem I saw was caused because the script didn't handle the
case where the terminal dimension returns as (0,0). I've fixed
this in the new patch, and cleaned up inefficient code.
> I did note, though, that you missed adding the SVN_DEPRECATED
> marker to the being-deprecated function.
Thanks :) I'll fix that once I have some feedback on the rest.
[[[
Disable ANSI color for dumb terminals, fix logic bug where
dimensions of (0,0) was treated as a positive result,
re-factored _run_tests to remove repeated calculation of
line_length.
* build/run_tests.py
(_get_term_width): Add test condition.
(TestHarness): Add new variable.
(_run_test): Add new parameter, remove function call.
]]]
Index: build/run_tests.py
===================================================================
--- build/run_tests.py (revision 1463012)
+++ build/run_tests.py (working copy)
@@ -100,6 +100,11 @@ def _get_term_width():
os.close(fd)
except:
pass
+ ## Some terminals (eg emacs *shell*, emacs *compilation*)
+ ## seem to return (0,0) from ioctl_GWINSZ, so let's deal
+ ## with that case...
+ if cr == (0, 0):
+ cr = None
if not cr:
try:
cr = (os.environ['LINES'], os.environ['COLUMNS'])
@@ -178,7 +183,8 @@ class TestHarness:
self.log = None
self.ssl_cert = ssl_cert
self.http_proxy = http_proxy
- if not sys.stdout.isatty() or sys.platform == 'win32':
+ if not sys.stdout.isatty() or sys.platform == 'win32' or \
+ os.getenv("TERM") == "dumb":
TextColors.disable()
def run(self, list):
@@ -186,8 +192,9 @@ class TestHarness:
there is a log file. Return zero iff all test programs passed.'''
self._open_log('w')
failed = 0
+ line_length = _get_term_width()
for cnt, prog in enumerate(list):
- failed = self._run_test(prog, cnt, len(list)) or failed
+ failed = self._run_test(prog, cnt, len(list), line_length) or failed
if self.log is None:
return failed
@@ -550,7 +557,7 @@ class TestHarness:
return failed
- def _run_test(self, prog, test_nr, total_tests):
+ def _run_test(self, prog, test_nr, total_tests, line_length):
"Run a single test. Return the test's exit code."
if self.log:
@@ -587,7 +594,6 @@ class TestHarness:
progabs = os.path.abspath(os.path.join(self.srcdir, prog))
old_cwd = os.getcwd()
- line_length = _get_term_width()
dots_needed = line_length \
- len(test_info) \
- len('success')