Bug #: 4542
authoreseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 21 Aug 2005 00:16:01 +0000 (00:16 +0000)
committereseidel <eseidel@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 21 Aug 2005 00:16:01 +0000 (00:16 +0000)
Submitted by: eseidel
Reviewed by: darin
        * DumpRenderTree/DumpRenderTree.m:
        (main): cleans up delegates
        (dumpRenderTree): closes CFString/CFURL leak
        * Scripts/run-webkit-tests:
        Adds --leaks option to run-webkit-tests
        http://bugzilla.opendarwin.org/show_bug.cgi?id=4542

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@10275 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/DumpRenderTree/DumpRenderTree.m
WebKitTools/Scripts/run-webkit-tests

index 649c32b34e75b1f685ddf5f5e94619c40af21fe7..479b315477c3cb2aed40e5e34e5ab3fa988f8a07 100644 (file)
@@ -1,3 +1,14 @@
+2005-08-20  Eric Seidel  <eseidel@apple.com>
+
+        Reviewed by darin.
+
+        * DumpRenderTree/DumpRenderTree.m:
+        (main): cleans up delegates
+        (dumpRenderTree): closes CFString/CFURL leak
+        * Scripts/run-webkit-tests:
+        Adds --leaks option to run-webkit-tests
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=4542
+
 2005-08-19  Ben La Monica  <ben.lamonica@gmail.com>
 
         Reviewed by Darin.
index 2d40c1c6350289fc4dc18f2cf23c1e756b236d93..69c199b54413e4ea882785a3d31c3f70d77be308 100644 (file)
@@ -171,6 +171,10 @@ int main(int argc, const char *argv[])
     [preferences setDefaultFontSize:defaultFontSize];
     [preferences setDefaultFixedFontSize:defaultFixedFontSize];
     [preferences setMinimumFontSize:minimumFontSize];
+    
+    [webView release];
+    [delegate release];
+    [editingDelegate release];
 
     [pool release];
     return 0;
@@ -446,7 +450,6 @@ static void dump(void)
 
 static void dumpRenderTree(const char *filename)
 {
-
     CFStringRef filenameString = CFStringCreateWithCString(NULL, filename, kCFStringEncodingUTF8);
     if (filenameString == NULL) {
         fprintf(stderr, "can't parse filename as UTF-8\n");
@@ -454,6 +457,7 @@ static void dumpRenderTree(const char *filename)
     }
 
     CFURLRef URL = CFURLCreateWithFileSystemPath(NULL, filenameString, kCFURLPOSIXPathStyle, FALSE);
+    CFRelease(filenameString);
     if (URL == NULL) {
         fprintf(stderr, "can't turn %s into a CFURL\n", filename);
         return;
@@ -468,6 +472,7 @@ static void dumpRenderTree(const char *filename)
 
     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     [frame loadRequest:[NSURLRequest requestWithURL:(NSURL *)URL]];
+    CFRelease(URL);
     [pool release];
     while (!done) {
         pool = [[NSAutoreleasePool alloc] init];
index 709d464bc693b89086ce00427a8b959c782b563d..c1dc486314f8f37f005b5d30f2f53fa05d4e439a 100755 (executable)
@@ -31,6 +31,7 @@
 use strict;
 use IPC::Open2;
 use Getopt::Long;
+use File::Path;
 use FindBin;
 use Cwd;
 use lib $FindBin::Bin;
@@ -57,6 +58,7 @@ chdirWebKit();
 # Argument handling
 my $testSVGs = '';
 my $pixelTests = '';
+my $checkLeaks = '';
 my $maxWidth = '';
 my $maxHeight = '';
 my $verbose = '';
@@ -64,6 +66,7 @@ my $quiet = '';
 
 GetOptions('svg' => \$testSVGs, 
     'pixel-tests' => \$pixelTests,
+    'leaks' => \$checkLeaks,
     'max-width' => \$maxWidth,
     'max-height' => \$maxHeight, 
     'verbose' => \$verbose,
@@ -103,6 +106,9 @@ my $testResultsDirectory = "/tmp/layout-test-results";
 my $testResults = "$testResultsDirectory/results.html";
 
 $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
+if ($checkLeaks) {
+    $ENV{MallocStackLogging} = 1;
+}
 
 my @tests;
 
@@ -156,10 +162,13 @@ push  @toolArgs, "-";
 
 $| = 1;
 
-open2(\*IN, \*OUT, $tool, @toolArgs) or die;
+my $toolPID;
+my $imageDiffToolPID;
+
+$toolPID = open2(\*IN, \*OUT, $tool, @toolArgs) or die;
 
 if ($pixelTests) {
-    open2(\*DIFFIN, \*DIFFOUT, $imageDiffTool, "") or die "unable to open $imageDiffTool\n";
+    $imageDiffToolPID = open2(\*DIFFIN, \*DIFFOUT, $imageDiffTool, "") or die "unable to open $imageDiffTool\n";
 }
 
 my $column = 0;
@@ -302,7 +311,7 @@ for my $test (@tests) {
 
         my $dir = "$testResultsDirectory/$base";
         $dir =~ s|/[^/]+$||;
-        system "mkdir", "-p", $dir;
+        mkpath $dir;
 
         open ACTUAL, ">", "$testResultsDirectory/$base-actual.txt" or die;
         print ACTUAL $actual;
@@ -368,7 +377,7 @@ for my $test (@tests) {
 
         close IN;
         close OUT;
-        open2(\*IN, \*OUT, $tool, @toolArgs) or die;
+        $toolPID = open2(\*IN, \*OUT, $tool, @toolArgs) or die;
     }
     
     $count += 1;
@@ -376,6 +385,22 @@ for my $test (@tests) {
     push @{$tests{$result}}, $test;
 }
 
+if ($checkLeaks) {
+    print "Checking for leaks in $toolname:\n";
+    my $leaksResults = `leaks $toolPID`;
+    my $leaksResultFile = "$testDirectory/$toolname-leaks.txt"
+    
+    open EXPECTED, ">", $leaksResultFile or print "Could not write leaks output to leaksResultFile\n";
+        print EXPECTED $actualPNG;
+            close EXPECTED;
+        }
+    
+    if ($pixelTests) {
+        print "Checking for leaks in ImageDiff:\n";
+        system "leaks", $imageDiffToolPID , "> $testDirectory/ImageDiff-leaks.txt";
+    }
+}
+
 close IN;
 close OUT;
 
@@ -408,7 +433,7 @@ if ($counts{match} && $counts{match} == $count) {
         }
     }
     
-    system "mkdir", "-p", $testResultsDirectory;
+    mkpath $testResultsDirectory;
 
     open HTML, ">", $testResults or die;
     print HTML "<html>\n";