Title: [152934] trunk/Tools
Revision
152934
Author
achristen...@apple.com
Date
2013-07-19 17:11:32 -0700 (Fri, 19 Jul 2013)

Log Message

Improved code coverage generation.
https://bugs.webkit.org/show_bug.cgi?id=118926

Reviewed by Tim Horton.

* Scripts/build-webkit: Removed exception preventing ANGLE code coverage support.
* Scripts/generate-coverage-data: Added --no-build to run-_javascript_core-tests call.
(generateReport): Moved report generation to a subroutine.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (152933 => 152934)


--- trunk/Tools/ChangeLog	2013-07-19 23:30:02 UTC (rev 152933)
+++ trunk/Tools/ChangeLog	2013-07-20 00:11:32 UTC (rev 152934)
@@ -1,3 +1,14 @@
+2013-07-19  Alex Christensen  <achristen...@apple.com>
+
+        Improved code coverage generation.
+        https://bugs.webkit.org/show_bug.cgi?id=118926
+
+        Reviewed by Tim Horton.
+
+        * Scripts/build-webkit: Removed exception preventing ANGLE code coverage support.
+        * Scripts/generate-coverage-data: Added --no-build to run-_javascript_core-tests call.
+        (generateReport): Moved report generation to a subroutine.
+
 2013-07-19  Daniel Bates  <daba...@apple.com>
 
         Make Perl tools work when using git bisect with Git branch build setup

Modified: trunk/Tools/Scripts/build-webkit (152933 => 152934)


--- trunk/Tools/Scripts/build-webkit	2013-07-19 23:30:02 UTC (rev 152933)
+++ trunk/Tools/Scripts/build-webkit	2013-07-20 00:11:32 UTC (rev 152934)
@@ -326,7 +326,7 @@
         $result = buildGtkProject($project, $clean, $prefixPath, $makeArgs, $noWebKit1, $noWebKit2, @features);
     } elsif (isAppleMacWebKit()) {
         my @local_options = @options;
-        push @local_options, XcodeCoverageSupportOptions() if $coverageSupport && $project ne "ANGLE";
+        push @local_options, XcodeCoverageSupportOptions() if $coverageSupport;
         my $projectPath = $project =~ /gtest/ ? "xcode/gtest" : $project;
         $result = buildXCodeProject($projectPath, $clean, @local_options, @ARGV);
     } elsif (isAppleWinWebKit()) {

Modified: trunk/Tools/Scripts/generate-coverage-data (152933 => 152934)


--- trunk/Tools/Scripts/generate-coverage-data	2013-07-19 23:30:02 UTC (rev 152933)
+++ trunk/Tools/Scripts/generate-coverage-data	2013-07-20 00:11:32 UTC (rev 152934)
@@ -46,46 +46,49 @@
 sub getFileHitsAndBranches($);
 sub addLineCounts($$$$$$);
 sub createResultName();
+sub generateReport($);
 
-my $resultName = createResultName();
-
-# Move to the source directory
 chdirWebKit();
+system("mkdir WebKitBuild/Coverage") if ! -d "WebKitBuild/Coverage";
 
 # Delete old gcov files
 print "Cleaning up\n";
 system("if [ -d WebKitBuild ]; then find WebKitBuild -name '*.gcda' -delete; fi;") == 0 or die "Cannot delete old gcda files (code coverage";
 
-# Compile WebKit and run the tests
 print "Building and testing\n";
-system("Tools/Scripts/build-webkit", "--coverage", @ARGV) == 0 or die "Cannot compile webkit with code coverage";
+system("Tools/Scripts/build-webkit", "--clean", @ARGV) == 0 or die "Cannot clean WebKit build";
+system("Tools/Scripts/build-webkit", "--coverage", "--release", @ARGV) == 0 or die "Cannot compile WebKit with code coverage";
+system("Tools/Scripts/run-_javascript_core-tests --no-build");
+system("Tools/Scripts/run-api-tests");
 system("Tools/Scripts/run-webkit-tests");
 system("Tools/Scripts/run-webkit-tests -2");
-system("Tools/Scripts/run-_javascript_core-tests");
-system("Tools/Scripts/run-api-tests");
+generateReport(createResultName());
+print "Done\n";
 
-# Generate the coverage data and report
-print "Collecting coverage data\n";
-system("mkdir WebKitBuild/Coverage") if ! -d "WebKitBuild/Coverage";
-system("python Tools/Scripts/webkitpy/tool/gcovr --xml --output=WebKitBuild/Coverage/" . $resultName . ".xml") == 0 or die "Cannot run gcovr";
+sub generateReport()
+{
+    my ($reportName) = @_;
 
-# Collect useful data from xml to json format
-my $jsonData = encode_json(parseGcovrOutput("WebKitBuild/Coverage/$resultName.xml"));
-open my $templateFile, "<", "Tools/CodeCoverage/results-template.html" or die "Cannot open Tools/CodeCoverage/results-template.html";
-my $templateHtml = join("", <$templateFile>);
-close $templateFile;
-$templateHtml =~ s/%CoverageDataJSON%/$jsonData/;
+    # Generate the coverage data and report
+    print "Collecting coverage data\n";
+    system("python Tools/Scripts/webkitpy/tool/gcovr --xml --output=WebKitBuild/Coverage/" . $reportName . ".xml") == 0 or die "Cannot run gcovr";
 
-my $reportFilename = "WebKitBuild/Coverage/$resultName.html";
-open my $reportFile, ">", $reportFilename or die "Cannot open $reportFilename";
-print $reportFile $templateHtml;
-close $reportFile;
+    # Collect useful data from xml to json format
+    my $jsonData = encode_json(parseGcovrOutput("WebKitBuild/Coverage/$reportName.xml"));
+    open my $templateFile, "<", "Tools/CodeCoverage/results-template.html" or die "Cannot open Tools/CodeCoverage/results-template.html";
+    my $templateHtml = join("", <$templateFile>);
+    close $templateFile;
+    $templateHtml =~ s/%CoverageDataJSON%/$jsonData/;
 
-# Open the report
-my $url = "" . sourceDir() . "/WebKitBuild/Coverage/$resultName.html";
-system "open \"$url\"";
+    my $reportFilename = "WebKitBuild/Coverage/$reportName.html";
+    open my $reportFile, ">", $reportFilename or die "Cannot open $reportFilename";
+    print $reportFile $templateHtml;
+    close $reportFile;
 
-print "Done\n";
+    # Open the report
+    my $url = "" . sourceDir() . "/WebKitBuild/Coverage/$reportName.html";
+    system "open \"$url\"";
+}
 
 sub parseGcovrOutput($)
 {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to