Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Unified Diff: tools/valgrind/valgrind_test.py

Issue 8537013: Find out the Webkit layout_tests names by reading their stdout (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/valgrind/valgrind_test.py
===================================================================
--- tools/valgrind/valgrind_test.py (revision 109804)
+++ tools/valgrind/valgrind_test.py (working copy)
@@ -390,23 +390,43 @@
appropriately.
"""
command = " ".join(proc)
+ # Add the PID of the browser wrapper to the logfile names so we can
+ # separate log files for different UI tests at the analyze stage.
command = command.replace("%p", "$$.%p")
(fd, indirect_fname) = tempfile.mkstemp(dir=self.log_dir,
prefix="browser_wrapper.",
text=True)
f = os.fdopen(fd, "w")
- f.write("#!/bin/bash\n")
- f.write('echo "Started Valgrind wrapper for this test, PID=$$"\n\n')
- f.write('for arg in $@\ndo\n')
- f.write(' if [[ "$arg" =~ --test-name=(.*) ]]\n then\n')
- f.write(' TESTCASE=${BASH_REMATCH[1]}\n')
- f.write(' echo $TESTCASE >`dirname $0`/testcase.$$.name\n')
- f.write(' fi\ndone\n')
- # Add the PID of the browser wrapper to the logfile names so we can
- # separate log files for different UI tests at the analyze stage.
- f.write(command)
- f.write(' "$@"\n')
+ f.write('#!/bin/bash\n'
+ 'echo "Started Valgrind wrapper for this test, PID=$$"\n')
+
+ # Try to get the test case name by looking at the program arguments.
+ # i.e. Chromium ui_tests and friends pass --test-name arg.
+ f.write('DIR=`dirname $0`\n'
+ 'FOUND_TESTNAME=0\n'
+ 'TESTNAME_FILE=$DIR/testcase.$$.name\n'
+ 'for arg in $@; do\n'
+ ' # TODO(timurrrr): this doesn\'t handle "--test-name Test.Name"\n'
+ ' if [[ "$arg" =~ --test-name=(.*) ]]; then\n'
+ ' echo ${BASH_REMATCH[1]} >$TESTNAME_FILE\n'
+ ' FOUND_TESTNAME=1\n'
+ ' fi\n'
+ 'done\n\n')
+
+ f.write('if [ "$FOUND_TESTNAME" = "1" ]; then\n'
+ ' %s "$@"\n'
+ 'else\n' % command)
+ # Webkit layout_tests print out the test URL as the first line of stdout.
+ f.write(' %s "$@" | tee $DIR/test.$$.stdout\n'
+ ' EXITCODE=$PIPESTATUS\n' # $? holds the tee's exit code
+ ' head -n 1 $DIR/test.$$.stdout |\n'
+ ' grep URL |\n'
Timur Iskhodzhanov 2011/11/12 19:42:11 also: extra check won't hurt.
+ ' sed "s/^.*third_party\/WebKit\/LayoutTests\///" '
+ '>$TESTNAME_FILE\n'
+ ' exit $EXITCODE\n'
+ 'fi\n' % command)
+
f.close()
os.chmod(indirect_fname, stat.S_IRUSR|stat.S_IXUSR)
return indirect_fname
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698