[Piglit] [PATCH] add new --ignoreStderr option to piglit-run.py

Jose Fonseca jfonseca at vmware.com
Fri Apr 19 03:33:30 PDT 2013


Yes, assuming stderr messages are driver warnings seems a bit pedantic.

We could do the other way around -- have a whitelist of warning regular expressions that we do known that are worrisome.

Jose

----- Original Message -----
> Normally, if anything unexpected is printed to stderr we report 'warn'
> for the test result.  The list of expected/allowed stderr message is
> found at the end of core.py.  It's a PITA to update this list and if
> you've temporarily inserted extra debug code in Mesa/gallium it causes
> piglit to just report 'warn' instead of the more useful 'pass/fail'.
> 
> I wonder if anybody depends on stderr output for generating 'warn'
> results.  If not, maybe we should just remove that "feature" entirely.
> ---
>  framework/core.py     |    5 +++--
>  framework/exectest.py |    5 +++--
>  piglit-run.py         |    7 ++++++-
>  3 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/framework/core.py b/framework/core.py
> index 08f442f..8d0d0a6 100644
> --- a/framework/core.py
> +++ b/framework/core.py
> @@ -372,13 +372,14 @@ class TestrunResult:
>  
>  class Environment:
>  	def __init__(self, concurrent=True, execute=True, include_filter=[],
> -			exclude_filter=[], valgrind=False):
> +			exclude_filter=[], valgrind=False, ignoreStderr=False):
>  		self.concurrent     = concurrent
>  		self.execute        = execute
>  		self.filter         = []
>  		self.exclude_filter = []
>  		self.exclude_tests  = set()
>  		self.valgrind       = valgrind
> +		self.ignoreStderr   = ignoreStderr
>  
>  		"""
>  		The filter lists that are read in should be a list of string objects,
> @@ -455,7 +456,7 @@ class Test:
>  			try:
>  				status("running")
>  				time_start = time.time()
> -				result = self.run(env.valgrind)
> +				result = self.run(env.valgrind, env.ignoreStderr)
>  				time_end = time.time()
>  				if 'time' not in result:
>  					result['time'] = time_end - time_start
> diff --git a/framework/exectest.py b/framework/exectest.py
> index b8d97b8..007cf49 100644
> --- a/framework/exectest.py
> +++ b/framework/exectest.py
> @@ -55,7 +55,7 @@ class ExecTest(Test):
>  		raise NotImplementedError
>  		return out
>  
> -	def run(self, valgrind):
> +	def run(self, valgrind, ignoreStderr):
>  		"""
>  		Run a test.  The return value will be a dictionary with keys
>  		including 'result', 'info', 'returncode' and 'command'.
> @@ -161,7 +161,8 @@ class ExecTest(Test):
>  			results['returncode'] = returncode
>  			results['command'] = ' '.join(self.command)
>  
> -			self.handleErr(results, err)
> +			if not ignoreStderr:
> +				self.handleErr(results, err)
>  
>  		else:
>  			results = TestResult()
> diff --git a/piglit-run.py b/piglit-run.py
> index 6d6ec77..d6aadf0 100755
> --- a/piglit-run.py
> +++ b/piglit-run.py
> @@ -94,6 +94,10 @@ def main():
>  	parser.add_argument("--valgrind",
>  			action  =  "store_true",
>  			help    = "Run tests in valgrind's memcheck")
> +	parser.add_argument("--ignoreStderr",
> +			action  = "store_true",
> +			help    = "Ignore messages printed to stderr (don't report 'warn'"
> +					  " for unexpected stderr messages)")
>  	parser.add_argument("testProfile",
>  			metavar = "<Path to test profile>",
>  			help    = "Path to testfile to run")
> @@ -155,7 +159,8 @@ def main():
>  			exclude_filter=args.exclude_tests,
>  			include_filter=args.include_tests,
>  			execute=args.execute,
> -			valgrind=args.valgrind)
> +			valgrind=args.valgrind,
> +			ignoreStderr=args.ignoreStderr)
>  
>  	# Change working directory to the root of the piglit directory
>  	piglit_dir = path.dirname(path.realpath(sys.argv[0]))
> --
> 1.7.3.4
> 
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
> 


More information about the Piglit mailing list