Title: [192774] trunk/Tools
Revision
192774
Author
[email protected]
Date
2015-11-26 08:43:22 -0800 (Thu, 26 Nov 2015)

Log Message

Extract prependToEnvironmentVariableList
<http://webkit.org/b/151536>

Reviewed by Daniel Bates.

Tests: webkitdirs_unittest/appendToEnvironmentVariableList.pl
       webkitdirs_unittest/prependToEnvironmentVariableList.pl

* Scripts/webkitdirs.pm: Export appendToEnvironmentVariableList
and prependToEnvironmentVariableList.
(appendToEnvironmentVariableList): Simplify variable name.
Switch to use $Config{path_sep}.
(prependToEnvironmentVariableList): Add new method.
(setupMacWebKitEnvironment): Switch to use
prependToEnvironmentVariableList().
(setupIOSWebKitEnvironment): Ditto.

* Scripts/webkitperl/webkitdirs_unittest/appendToEnvironmentVariableList.pl: Added.
* Scripts/webkitperl/webkitdirs_unittest/prependToEnvironmentVariableList.pl: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/Tools/ChangeLog (192773 => 192774)


--- trunk/Tools/ChangeLog	2015-11-26 13:52:45 UTC (rev 192773)
+++ trunk/Tools/ChangeLog	2015-11-26 16:43:22 UTC (rev 192774)
@@ -1,3 +1,25 @@
+2015-11-26  David Kilzer  <[email protected]>
+
+        Extract prependToEnvironmentVariableList
+        <http://webkit.org/b/151536>
+
+        Reviewed by Daniel Bates.
+
+        Tests: webkitdirs_unittest/appendToEnvironmentVariableList.pl
+               webkitdirs_unittest/prependToEnvironmentVariableList.pl
+
+        * Scripts/webkitdirs.pm: Export appendToEnvironmentVariableList
+        and prependToEnvironmentVariableList.
+        (appendToEnvironmentVariableList): Simplify variable name.
+        Switch to use $Config{path_sep}.
+        (prependToEnvironmentVariableList): Add new method.
+        (setupMacWebKitEnvironment): Switch to use
+        prependToEnvironmentVariableList().
+        (setupIOSWebKitEnvironment): Ditto.
+
+        * Scripts/webkitperl/webkitdirs_unittest/appendToEnvironmentVariableList.pl: Added.
+        * Scripts/webkitperl/webkitdirs_unittest/prependToEnvironmentVariableList.pl: Added.
+
 2015-11-22  Andy Estes  <[email protected]>
 
         Teach MiniBrowser how to enable the mock content filter

Modified: trunk/Tools/Scripts/webkitdirs.pm (192773 => 192774)


--- trunk/Tools/Scripts/webkitdirs.pm	2015-11-26 13:52:45 UTC (rev 192773)
+++ trunk/Tools/Scripts/webkitdirs.pm	2015-11-26 16:43:22 UTC (rev 192774)
@@ -58,6 +58,7 @@
        &XcodeOptions
        &XcodeStaticAnalyzerOption
        &appDisplayNameFromBundle
+       &appendToEnvironmentVariableList
        &baseProductDir
        &chdirWebKit
        &checkFrameworks
@@ -70,6 +71,7 @@
        &iosSimulatorDeviceByName
        &nmPath
        &passedConfiguration
+       &prependToEnvironmentVariableList
        &printHelpAndExitForRunAndDebugWebKitAppIfNeeded
        &productDir
        &quitIOSSimulator
@@ -1377,17 +1379,28 @@
     }
 }
 
-sub appendToEnvironmentVariableList
+sub appendToEnvironmentVariableList($$)
 {
-    my ($environmentVariableName, $value) = @_;
+    my ($name, $value) = @_;
 
-    if (defined($ENV{$environmentVariableName})) {
-        $ENV{$environmentVariableName} .= ":" . $value;
+    if (defined($ENV{$name})) {
+        $ENV{$name} .= $Config{path_sep} . $value;
     } else {
-        $ENV{$environmentVariableName} = $value;
+        $ENV{$name} = $value;
     }
 }
 
+sub prependToEnvironmentVariableList($$)
+{
+    my ($name, $value) = @_;
+
+    if (defined($ENV{$name})) {
+        $ENV{$name} = $value . $Config{path_sep} . $ENV{$name};
+    } else {
+        $ENV{$name} = $value;
+    }
+}
+
 sub sharedCommandLineOptions()
 {
     return (
@@ -2150,8 +2163,8 @@
 
     $dyldFrameworkPath = File::Spec->rel2abs($dyldFrameworkPath);
 
-    $ENV{DYLD_FRAMEWORK_PATH} = $ENV{DYLD_FRAMEWORK_PATH} ? join(":", $dyldFrameworkPath, $ENV{DYLD_FRAMEWORK_PATH}) : $dyldFrameworkPath;
-    $ENV{__XPC_DYLD_FRAMEWORK_PATH} = $dyldFrameworkPath;
+    prependToEnvironmentVariableList("DYLD_FRAMEWORK_PATH", $dyldFrameworkPath);
+    prependToEnvironmentVariableList("__XPC_DYLD_FRAMEWORK_PATH", $dyldFrameworkPath);
     $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
 
     setUpGuardMallocIfNeeded();
@@ -2162,8 +2175,8 @@
     my ($dyldFrameworkPath) = @_;
     $dyldFrameworkPath = File::Spec->rel2abs($dyldFrameworkPath);
 
-    $ENV{DYLD_FRAMEWORK_PATH} = $dyldFrameworkPath;
-    $ENV{DYLD_LIBRARY_PATH} = $dyldFrameworkPath;
+    prependToEnvironmentVariableList("DYLD_FRAMEWORK_PATH", $dyldFrameworkPath);
+    prependToEnvironmentVariableList("DYLD_LIBRARY_PATH", $dyldFrameworkPath);
 
     setUpGuardMallocIfNeeded();
 }

Added: trunk/Tools/Scripts/webkitperl/webkitdirs_unittest/appendToEnvironmentVariableList.pl (0 => 192774)


--- trunk/Tools/Scripts/webkitperl/webkitdirs_unittest/appendToEnvironmentVariableList.pl	                        (rev 0)
+++ trunk/Tools/Scripts/webkitperl/webkitdirs_unittest/appendToEnvironmentVariableList.pl	2015-11-26 16:43:22 UTC (rev 192774)
@@ -0,0 +1,102 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2015 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.
+
+# Unit tests for webkitdirs::appendToEnvironmentVariableList($$).
+
+use strict;
+use warnings;
+
+use Config;
+use Test::More;
+use webkitdirs;
+
+my @testCases = (
+{
+    setup => sub { delete $ENV{DYLD_FRAMEWORK_PATH}; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => "/System/Library/PrivateFrameworks",
+    description => "Append to nonexistent variable",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = undef; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => "/System/Library/PrivateFrameworks",
+    description => "Append to undefined variable",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = ""; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "", "/System/Library/PrivateFrameworks"),
+    description => "Append to empty path",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = $Config{path_sep}; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "", "", "/System/Library/PrivateFrameworks"),
+    description => "Append to empty path with separator",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = "/System/Library/Frameworks"; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/Frameworks", "/System/Library/PrivateFrameworks"),
+    description => "Append to single path with no separator",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = "/System/Library/Frameworks" . $Config{path_sep}; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/Frameworks", "", "/System/Library/PrivateFrameworks"),
+    description => "Append to single path with separator",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = "/System/Library/Frameworks" . $Config{path_sep} . "/System/Library/PrivateFrameworks"; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/Frameworks", "/System/Library/PrivateFrameworks", "/System/Library/PrivateFrameworks"),
+    description => "Append to multiple, duplicate path with no separator",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = "/System/Library/Frameworks" . $Config{path_sep} . "/System/Library/PrivateFrameworks" . $Config{path_sep}; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/Frameworks", "/System/Library/PrivateFrameworks", "", "/System/Library/PrivateFrameworks"),
+    description => "Append to multiple, duplicate path with separator",
+},
+);
+
+plan(tests => 2 * @testCases);
+
+foreach my $testCase (@testCases) {
+    local %ENV;
+    $testCase->{setup}->();
+    my $result = appendToEnvironmentVariableList($testCase->{argName}, $testCase->{argValue});
+    is_deeply($result, $testCase->{expectedValue}, "appendToEnvironmentVariableList: $testCase->{description} - return result");
+    is_deeply($testCase->{expectedValue}, $ENV{$testCase->{argName}}, "appendToEnvironmentVariableList: $testCase->{description} - environment variable value");
+}
+

Added: trunk/Tools/Scripts/webkitperl/webkitdirs_unittest/prependToEnvironmentVariableList.pl (0 => 192774)


--- trunk/Tools/Scripts/webkitperl/webkitdirs_unittest/prependToEnvironmentVariableList.pl	                        (rev 0)
+++ trunk/Tools/Scripts/webkitperl/webkitdirs_unittest/prependToEnvironmentVariableList.pl	2015-11-26 16:43:22 UTC (rev 192774)
@@ -0,0 +1,102 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2015 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.
+
+# Unit tests for webkitdirs::prependToEnvironmentVariableList($$).
+
+use strict;
+use warnings;
+
+use Config;
+use Test::More;
+use webkitdirs;
+
+my @testCases = (
+{
+    setup => sub { delete $ENV{DYLD_FRAMEWORK_PATH}; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => "/System/Library/PrivateFrameworks",
+    description => "Prepend to nonexistent variable",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = undef; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => "/System/Library/PrivateFrameworks",
+    description => "Prepend to undefined variable",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = ""; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/PrivateFrameworks", ""),
+    description => "Prepend to empty path",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = $Config{path_sep}; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/PrivateFrameworks", "", ""),
+    description => "Prepend to empty path with separator",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = "/System/Library/Frameworks"; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/PrivateFrameworks", "/System/Library/Frameworks"),
+    description => "Prepend to single path with no separator",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = $Config{path_sep} . "/System/Library/Frameworks"; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/PrivateFrameworks", "", "/System/Library/Frameworks"),
+    description => "Prepend to single path with separator",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = "/System/Library/Frameworks" . $Config{path_sep} . "/System/Library/PrivateFrameworks"; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/PrivateFrameworks", "/System/Library/Frameworks", "/System/Library/PrivateFrameworks"),
+    description => "Prepend to multiple, duplicate path with no separator",
+},
+{
+    setup => sub { $ENV{DYLD_FRAMEWORK_PATH} = $Config{path_sep} . "/System/Library/Frameworks" . $Config{path_sep} . "/System/Library/PrivateFrameworks"; },
+    argName => "DYLD_FRAMEWORK_PATH",
+    argValue => "/System/Library/PrivateFrameworks",
+    expectedValue => join($Config{path_sep}, "/System/Library/PrivateFrameworks", "", "/System/Library/Frameworks", "/System/Library/PrivateFrameworks"),
+    description => "Prepend to multiple, duplicate path with separator",
+},
+);
+
+plan(tests => 2 * @testCases);
+
+foreach my $testCase (@testCases) {
+    local %ENV;
+    $testCase->{setup}->();
+    my $result = prependToEnvironmentVariableList($testCase->{argName}, $testCase->{argValue});
+    is_deeply($result, $testCase->{expectedValue}, "prependToEnvironmentVariableList: $testCase->{description} - return result");
+    is_deeply($testCase->{expectedValue}, $ENV{$testCase->{argName}}, "prependToEnvironmentVariableList: $testCase->{description} - environment variable value");
+}
+
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to