subversion/subversion-make-check-log-to-stdout.patch

170 lines
6.1 KiB
Diff

Index: Makefile.in
===================================================================
--- Makefile.in (revision 38431)
+++ Makefile.in (working copy)
@@ -416,7 +416,10 @@ check: bin $(TEST_DEPS) @BDB_TEST_DEPS@
if test "$(PARALLEL)" != ""; then \
flags="--parallel $$flags"; \
fi; \
- $(PYTHON) $(top_srcdir)/build/run_tests.py \
+ if test "$(LOG_TO_STDOUT)" != ""; then \
+ flags="--log-to-stdout $$flags"; \
+ fi; \
+ $(PYTHON) $(top_srcdir)/build/run_tests.py \
--config-file $(top_srcdir)/subversion/tests/tests.conf \
$$flags \
'$(abs_srcdir)' '$(abs_builddir)' $(TESTS); \
Index: build/run_tests.py
===================================================================
--- build/run_tests.py (revision 38431)
+++ build/run_tests.py (working copy)
@@ -36,7 +36,9 @@ class TestHarness:
'''Construct a TestHarness instance.
ABS_SRCDIR and ABS_BUILDDIR are the source and build directories.
- LOGFILE is the name of the log file.
+ LOGFILE is the name of the log file. If LOGFILE is None, let tests
+ print their output to stdout and stderr, and don't print a summary
+ at the end (since there's no log file to analyze).
BASE_URL is the base url for DAV tests.
FS_TYPE is the FS type for repository creation.
HTTP_LIBRARY is the HTTP library for DAV-based communications.
@@ -71,6 +73,10 @@ class TestHarness:
failed = 0
for cnt, prog in enumerate(list):
failed = self._run_test(prog, cnt, len(list)) or failed
+
+ if self.log is None:
+ return failed
+
self._open_log('r')
log_lines = self.log.readlines()
# Print summaries from least interesting to most interesting.
@@ -110,8 +116,9 @@ class TestHarness:
def _open_log(self, mode):
'Open the log file with the required MODE.'
- self._close_log()
- self.log = open(self.logfile, mode)
+ if self.logfile:
+ self._close_log()
+ self.log = open(self.logfile, mode)
def _close_log(self):
'Close the log file.'
@@ -129,11 +136,14 @@ class TestHarness:
return arg
progdir, progbase = os.path.split(prog)
- # Using write here because we don't want even a trailing space
- sys.stdout.write('Running all tests in %s [%d/%d]...' % (
- progbase, test_nr + 1, total_tests))
- self.log.write('START: %s\n' % progbase)
- self.log.flush()
+ if self.log:
+ # Using write here because we don't want even a trailing space
+ sys.stdout.write('Running all tests in %s [%d/%d]...' % (
+ progbase, test_nr + 1, total_tests))
+ self.log.write('START: %s\n' % progbase)
+ self.log.flush()
+ else:
+ print('START: %s' % progbase)
if progbase[-3:] == '.py':
progname = sys.executable
@@ -191,13 +201,16 @@ class TestHarness:
# output any failure info.
if failed == 1:
print('FAILURE')
- elif failed:
+ elif failed and self.log:
self.log.write('FAIL: %s: Unknown test failure see tests.log.\n\n' % progbase)
self.log.flush()
print('FAILURE')
else:
print('success')
- self.log.write('END: %s\n\n' % progbase)
+ if self.log:
+ self.log.write('END: %s\n\n' % progbase)
+ else:
+ print('END: %s\n' % progbase)
return failed
def _run_prog(self, progname, arglist):
@@ -210,20 +223,24 @@ class TestHarness:
os.close(stdout)
os.close(stderr)
- sys.stdout.flush()
- sys.stderr.flush()
- self.log.flush()
- old_stdout = os.dup(1)
- old_stderr = os.dup(2)
+ if self.log:
+ sys.stdout.flush()
+ sys.stderr.flush()
+ self.log.flush()
+ old_stdout = os.dup(1)
+ old_stderr = os.dup(2)
try:
- os.dup2(self.log.fileno(), 1)
- os.dup2(self.log.fileno(), 2)
+ if self.log:
+ os.dup2(self.log.fileno(), 1)
+ os.dup2(self.log.fileno(), 2)
rv = os.spawnv(os.P_WAIT, progname, arglist)
except:
- restore_streams(old_stdout, old_stderr)
+ if self.log:
+ restore_streams(old_stdout, old_stderr)
raise
else:
- restore_streams(old_stdout, old_stderr)
+ if self.log:
+ restore_streams(old_stdout, old_stderr)
return rv
@@ -233,7 +250,8 @@ def main():
['url=', 'fs-type=', 'verbose', 'cleanup',
'http-library=', 'server-minor-version=',
'fsfs-packing', 'fsfs-sharding=',
- 'enable-sasl', 'parallel', 'config-file='])
+ 'enable-sasl', 'parallel', 'config-file=',
+ 'log-to-stdout'])
except getopt.GetoptError:
args = []
@@ -243,8 +261,9 @@ def main():
base_url, fs_type, verbose, cleanup, enable_sasl, http_library, \
server_minor_version, fsfs_sharding, fsfs_packing, parallel, \
- config_file = \
- None, None, None, None, None, None, None, None, None, None, None
+ config_file, log_to_stdout = \
+ None, None, None, None, None, None, None, None, None, None, None, \
+ None
for opt, val in opts:
if opt in ['-u', '--url']:
base_url = val
@@ -268,11 +287,17 @@ def main():
parallel = 1
elif opt in ['--config-file']:
config_file = val
+ elif opt in ['--log-to-stdout']:
+ log_to_stdout = 1
else:
raise getopt.GetoptError
- th = TestHarness(args[0], args[1],
- os.path.abspath('tests.log'),
+ if log_to_stdout:
+ logfile = None
+ else:
+ logfile = os.path.abspath('tests.log')
+
+ th = TestHarness(args[0], args[1], logfile,
base_url, fs_type, http_library, server_minor_version,
verbose, cleanup, enable_sasl, parallel, config_file,
fsfs_sharding, fsfs_packing)