Don't use File::Slurp for run-leaks unit tests
authorddkilzer@apple.com <ddkilzer@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 15 Nov 2011 17:25:51 +0000 (17:25 +0000)
committerddkilzer@apple.com <ddkilzer@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 15 Nov 2011 17:25:51 +0000 (17:25 +0000)
<http://webkit.org/b/72356>

Reviewed by Daniel Bates.

* Scripts/webkitperl/run-leaks_unittest/RunLeaks.pm: Added.
* Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:
Extracted common package logic into RunLeaks.pm.  Fixed call to
RunLeaks::parseLeaksOutput().
* Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl: Ditto.
* Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl: Ditto.

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

Tools/ChangeLog
Tools/Scripts/webkitperl/run-leaks_unittest/RunLeaks.pm [new file with mode: 0644]
Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl
Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl
Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl

index 985aaac..bc49f59 100644 (file)
@@ -1,3 +1,17 @@
+2011-11-15  David Kilzer  <ddkilzer@apple.com>
+
+        Don't use File::Slurp for run-leaks unit tests
+        <http://webkit.org/b/72356>
+
+        Reviewed by Daniel Bates.
+
+        * Scripts/webkitperl/run-leaks_unittest/RunLeaks.pm: Added.
+        * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:
+        Extracted common package logic into RunLeaks.pm.  Fixed call to
+        RunLeaks::parseLeaksOutput().
+        * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl: Ditto.
+        * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl: Ditto.
+
 2011-11-15  Peter Kasting  <pkasting@google.com>
 
         Handle svn 1.7 when detecting whether a directory is in an svn checkout.
diff --git a/Tools/Scripts/webkitperl/run-leaks_unittest/RunLeaks.pm b/Tools/Scripts/webkitperl/run-leaks_unittest/RunLeaks.pm
new file mode 100644 (file)
index 0000000..79c6349
--- /dev/null
@@ -0,0 +1,59 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2011 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Imports run-leaks into a package for easy unit testing.
+
+package RunLeaks;
+
+use strict;
+use warnings;
+
+use English;
+use File::Spec;
+use FindBin;
+use lib File::Spec->catdir($FindBin::Bin, "..", "..");
+use webkitdirs;
+
+use base 'Exporter' ;
+use vars qw( @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION ) ;
+
+@EXPORT = ();
+@EXPORT_OK = ();
+%EXPORT_TAGS = ();
+$VERSION = '1.0';
+
+sub readFile($);
+
+my $runLeaksPath = File::Spec->catfile(sourceDir(), "Tools", "Scripts", "run-leaks");
+eval "sub {" . readFile($runLeaksPath) . "}";
+
+sub readFile($) {
+    local $INPUT_RECORD_SEPARATOR = undef; # Read in the whole file at once.
+    open FILE, "<", shift || die $!;
+    my $contents = <FILE>;
+    close FILE || die $!;
+    return $contents;
+};
+
+1;
index 7a75655..ec6dd62 100644 (file)
 # tests run-leaks using original leaks report version 1.0
 
 use strict;
-use diagnostics;
 use warnings;
 
-use File::Slurp qw(read_file);
-use File::Spec;
 use FindBin;
+use lib $FindBin::Bin;
+use RunLeaks;
 use Test::More;
 
-eval "package RunLeaks; sub {" . read_file(File::Spec->catfile($FindBin::Bin, "..", "..", "run-leaks")) . "}";
-
 my @input = split(/\n/, <<EOF);
 Process 1602: 86671 nodes malloced for 13261 KB
 Process 1602: 8 leaks for 160 total leaked bytes.
@@ -158,7 +155,7 @@ EOF
   },
 ];
 
-my $actualOutput = RunLeaks::parseLeaksOutput(\@input);
+my $actualOutput = RunLeaks::parseLeaksOutput(@input);
 
 plan(tests => 1);
 is_deeply($actualOutput, $expectedOutput, "leaks Report Version 1.0 - no call stack");
index 3a075ed..8470ad0 100644 (file)
 # - The "new" 2.0 format has "leaks Report Version:  2.0" after the two header sections.
 
 use strict;
-use diagnostics;
 use warnings;
 
-use File::Slurp qw(read_file);
-use File::Spec;
 use FindBin;
+use lib $FindBin::Bin;
+use RunLeaks;
 use Test::More;
 
-eval "package RunLeaks; sub {" . read_file(File::Spec->catfile($FindBin::Bin, "..", "..", "run-leaks")) . "}";
-
 my @input = split(/\n/, <<EOF);
 Process:         DumpRenderTree [29903]
 Path:            /Volumes/Data/Build/Debug/DumpRenderTree
@@ -122,7 +119,7 @@ EOF
   },
 ];
 
-my $actualOutput = RunLeaks::parseLeaksOutput(\@input);
+my $actualOutput = RunLeaks::parseLeaksOutput(@input);
 
 plan(tests => 1);
 is_deeply($actualOutput, $expectedOutput, "leaks Report Version 2.0 (old)");
index 3ac3829..a51decf 100644 (file)
 # - The "old" 2.0 format has "leaks Report Version:  2.0" at the top of the report.
 
 use strict;
-use diagnostics;
 use warnings;
 
-use File::Slurp qw(read_file);
-use File::Spec;
 use FindBin;
+use lib $FindBin::Bin;
+use RunLeaks;
 use Test::More;
 
-eval "package RunLeaks; sub {" . read_file(File::Spec->catfile($FindBin::Bin, "..", "..", "run-leaks")) . "}";
-
 my @input = split(/\n/, <<EOF);
 leaks Report Version:  2.0
 Process:         Safari [53606]
@@ -72,7 +69,7 @@ EOF
   },
 ];
 
-my $actualOutput = RunLeaks::parseLeaksOutput(\@input);
+my $actualOutput = RunLeaks::parseLeaksOutput(@input);
 
 plan(tests => 1);
 is_deeply($actualOutput, $expectedOutput, "leaks Report Version 2.0 (old)");