validate: launcher: Always create log files

Create log files even when stdout redirection is enabled.
This commit partially reverts 20c28de.

https://bugzilla.gnome.org/show_bug.cgi?id=742973
This commit is contained in:
Ramiro Polla 2015-01-15 15:32:12 +01:00 committed by Thibault Saunier
parent 4e0388c631
commit 9c3606a867
3 changed files with 18 additions and 45 deletions

View file

@ -31,7 +31,6 @@ import subprocess
import reporters import reporters
import ConfigParser import ConfigParser
import loggable import loggable
import tempfile
from loggable import Loggable from loggable import Loggable
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
@ -62,12 +61,9 @@ class Test(Loggable):
self.process = None self.process = None
self.duration = duration self.duration = duration
self.clean(True) self.clean()
def clean(self, full=True):
if not full:
return
def clean(self):
self.message = "" self.message = ""
self.error_str = "" self.error_str = ""
self.time_taken = 0.0 self.time_taken = 0.0
@ -320,15 +316,11 @@ class GstValidateTest(Test):
self.scenario = scenario self.scenario = scenario
def get_subproc_env(self): def get_subproc_env(self):
self.validatelogs = self.logfile + '.validate.logs'
logfiles = self.validatelogs
if self.options.redirect_logs: if self.options.redirect_logs:
self.validatelogs = os.path.join(
tempfile.gettempdir(), 'tmp.validate.logs')
logfiles = self.validatelogs
logfiles += os.pathsep + \ logfiles += os.pathsep + \
self.reporter.out.name.replace("<", '').replace(">", '') self.options.redirect_logs.replace("<", '').replace(">", '')
else:
self.validatelogs = self.logfile + '.validate.logs'
logfiles = self.validatelogs
subproc_env = os.environ.copy() subproc_env = os.environ.copy()
@ -336,8 +328,7 @@ class GstValidateTest(Test):
subproc_env["GST_VALIDATE_FILE"] = logfiles subproc_env["GST_VALIDATE_FILE"] = logfiles
self.extra_logfiles.append(self.validatelogs) self.extra_logfiles.append(self.validatelogs)
if 'GST_DEBUG' in os.environ and \ if 'GST_DEBUG' in os.environ:
not self.options.redirect_logs:
gstlogsfile = self.logfile + '.gstdebug' gstlogsfile = self.logfile + '.gstdebug'
self.extra_logfiles.append(gstlogsfile) self.extra_logfiles.append(gstlogsfile)
subproc_env["GST_DEBUG_FILE"] = gstlogsfile subproc_env["GST_DEBUG_FILE"] = gstlogsfile
@ -346,16 +337,9 @@ class GstValidateTest(Test):
return subproc_env return subproc_env
def clean(self, full=True): def clean(self):
Test.clean(self, full=full) Test.clean(self)
if hasattr(self, 'validatelogs') and not self.options.redirect_logs: self._sent_eos_pos = None
try:
os.remove(self.validatelogs)
except OSError:
pass
if full:
self._sent_eos_pos = None
def build_arguments(self): def build_arguments(self):
if "GST_VALIDATE" in os.environ: if "GST_VALIDATE" in os.environ:
@ -762,7 +746,6 @@ class TestsManager(Loggable):
self.reporter.after_test() self.reporter.after_test()
if res != Result.PASSED and (self.options.forever or if res != Result.PASSED and (self.options.forever or
self.options.fatal_error): self.options.fatal_error):
test.clean(full=False)
return test.result return test.result
return Result.PASSED return Result.PASSED
@ -1138,11 +1121,8 @@ class ScenarioManager(Loggable):
""" """
scenarios = [] scenarios = []
scenario_defs = os.path.join(self.config.main_dir, "scenarios.def") scenario_defs = os.path.join(self.config.main_dir, "scenarios.def")
if self.config.redirect_logs: logs = open(os.path.join(self.config.logsdir,
logs = open(os.devnull) "scenarios_discovery.log"), 'w')
else:
logs = open(
os.path.join(self.config.logsdir, "scenarios_discovery.log"), 'w')
try: try:
command = [self.GST_VALIDATE_COMMAND, command = [self.GST_VALIDATE_COMMAND,

View file

@ -22,7 +22,6 @@ import time
import loggable import loggable
import subprocess import subprocess
import sys import sys
import tempfile
logcat = "httpserver" logcat = "httpserver"
@ -57,13 +56,8 @@ class HTTPServer(loggable.Loggable):
def start(self): def start(self):
""" Start the server in a subprocess """ """ Start the server in a subprocess """
if self.options.redirect_logs: self._logsfile = open(os.path.join(self.options.logsdir,
self.info("Using devnull as HTTP server log file") "httpserver.logs"), 'w+')
self._logsfile = tempfile.TemporaryFile()
else:
self._logsfile = open(os.path.join(self.options.logsdir,
"httpserver.logs"),
'w+')
if self.options.http_server_dir is not None: if self.options.http_server_dir is not None:
if self._check_is_up(timeout=2): if self._check_is_up(timeout=2):
return True return True

View file

@ -68,18 +68,17 @@ class Reporter(Loggable):
def before_test(self, test): def before_test(self, test):
"""Initialize a timer before starting a test.""" """Initialize a timer before starting a test."""
path = os.path.join(self.options.logsdir,
test.classname.replace(".", os.sep))
mkdir(os.path.dirname(path))
test.logfile = path
if self.options.redirect_logs == 'stdout': if self.options.redirect_logs == 'stdout':
self.out = sys.stdout self.out = sys.stdout
test.logfile = 'stdout'
elif self.options.redirect_logs == 'stderr': elif self.options.redirect_logs == 'stderr':
self.out = sys.stderr self.out = sys.stderr
test.logfile = 'stderr'
else: else:
path = os.path.join(self.options.logsdir,
test.classname.replace(".", os.sep))
mkdir(os.path.dirname(path))
self.out = open(path, 'w+') self.out = open(path, 'w+')
test.logfile = path
self._current_test = test self._current_test = test
if self._start_time == 0: if self._start_time == 0: