Allow log file redirection through the new --redirect-logs parameter.
Keep the old --logs-dir stdout/stderr parameter, but reset to the
default logs directory in that case, and set redirect_logs internally.
This also prevents the creation of an stdout/stderr directory for
writing xunit.xml.
https://bugzilla.gnome.org/show_bug.cgi?id=742973
" You can reproduce with: %s %s\n" \
% (self.message, self._env_variable, self.command)
- if not self.reporter.uses_standard_output():
+ if not self.options.redirect_logs:
string += " You can find logs in:\n" \
" - %s" % (self.logfile)
for log in self.extra_logfiles:
message = "Launching: %s%s\n" \
" Command: '%s %s'\n" % (Colors.ENDC, self.classname,
self._env_variable, self.command)
- if not self.reporter.uses_standard_output():
+ if not self.options.redirect_logs:
message += " Logs:\n" \
" - %s" % (self.logfile)
for log in self.extra_logfiles:
self._kill_subprocess()
self.time_taken = time.time() - self._starting_time
- if not self.reporter.uses_standard_output():
+ if not self.options.redirect_logs:
self.reporter.out.seek(0)
self.reporter.out.write("=================\n"
"Test name: %s\n"
self.scenario = scenario
def get_subproc_env(self):
- if self.reporter.uses_standard_output():
+ if self.options.redirect_logs:
self.validatelogs = os.path.join(
tempfile.gettempdir(), 'tmp.validate.logs')
logfiles = self.validatelogs
self.extra_logfiles.append(self.validatelogs)
if 'GST_DEBUG' in os.environ and \
- not self.reporter.uses_standard_output():
+ not self.options.redirect_logs:
gstlogsfile = self.logfile + '.gstdebug'
self.extra_logfiles.append(gstlogsfile)
subproc_env["GST_DEBUG_FILE"] = gstlogsfile
def clean(self, full=True):
Test.clean(self, full=full)
- if self.reporter.uses_standard_output():
+ if hasattr(self, 'validatelogs') and not self.options.redirect_logs:
try:
os.remove(self.validatelogs)
except OSError:
def set_settings(self, options, args):
self.reporter = reporters.XunitReporter(options)
- if not options.logsdir in[sys.stderr, sys.stdout]:
- mkdir(options.logsdir)
self.options = options
wanted_testers = None
"""
scenarios = []
scenario_defs = os.path.join(self.config.main_dir, "scenarios.def")
- if self.config.logsdir in ["stdout", "stderr"]:
+ if self.config.redirect_logs:
logs = open(os.devnull)
else:
logs = open(
def start(self):
""" Start the server in a subprocess """
- if self.options.logsdir in ["stdout", "stderr"]:
+ if self.options.redirect_logs:
self.info("Using devnull as HTTP server log file")
self._logsfile = tempfile.TemporaryFile()
else:
self.main_dir = utils.DEFAULT_MAIN_DIR
self.output_dir = None
self.logsdir = None
+ self.redirect_logs = False
self.dest = None
self._using_default_paths = False
self.paths = []
self.output_dir = os.path.abspath(self.output_dir)
# other output directories
+ if self.logsdir in ['stdout', 'stderr']:
+ # Allow -l stdout/stderr to work like -rl stdout/stderr
+ self.redirect_logs = self.logsdir
+ self.logsdir = None
if self.logsdir is None:
self.logsdir = os.path.join(self.output_dir, "logs")
if self.xunit_file is None:
if not os.path.exists(self.dest):
os.makedirs(self.dest)
+ if not os.path.exists(self.logsdir):
+ os.makedirs(self.logsdir)
+
+ if not self.redirect_logs in ['stdout', 'stderr', False]:
+ printc("Log redirection (%s) must be either 'stdout' or 'stderr'."
+ % self.redirect_logs, Colors.FAIL, True)
+ return False
+
if urlparse.urlparse(self.dest).scheme == "":
self.dest = path2url(self.dest)
dir_group.add_argument("-o", "--output-dir", dest="output_dir",
help="Directory where to store logs and rendered files. Default is MAIN_DIR")
dir_group.add_argument("-l", "--logs-dir", dest="logsdir",
- help="Directory where to store logs, default is OUTPUT_DIR/logs."
- " Note that 'stdout' and 'sdterr' are valid values that lets you get all the logs"
- " printed in the terminal")
+ help="Directory where to store logs, default is OUTPUT_DIR/logs.")
dir_group.add_argument("-R", "--render-path", dest="dest",
help="Set the path to which projects should be rendered, default is OUTPUT_DIR/rendered")
dir_group.add_argument("-p", "--medias-paths", dest="paths", action="append",
dir_group.add_argument("-a", "--clone-dir", dest="clone_dir",
help="Paths where to clone the testuite to run "
" default is MAIN_DIR/gst-integration-testsuites")
+ dir_group.add_argument("-rl", "--redirect-logs", dest="redirect_logs",
+ help="Redirect logs to 'stdout' or 'sdterr'.")
http_server_group = parser.add_argument_group(
"Handle the HTTP server to be created")
}
self.results = []
- def uses_standard_output(self):
- return self.out in [sys.stdout, sys.stderr]
-
def before_test(self, test):
"""Initialize a timer before starting a test."""
- if self.options.logsdir == 'stdout':
+ if self.options.redirect_logs == 'stdout':
self.out = sys.stdout
test.logfile = 'stdout'
- elif self.options.logsdir == 'stderr':
+ elif self.options.redirect_logs == 'stderr':
self.out = sys.stderr
test.logfile = 'stderr'
else:
self.results.append(self._current_test)
self.add_results(self._current_test)
- if not self.uses_standard_output():
+ if not self.options.redirect_logs:
self.out.close()
self.out = None
def _get_captured(self):
captured = ""
- if self.out and not self.uses_standard_output():
+ if self.out and not self.options.redirect_logs:
self.out.seek(0)
value = self.out.read()
if value: