https://bugs.webkit.org/show_bug.cgi?id=77248
Reviewed by Dirk Pranke.
* Scripts/webkit-build-directory:
If called with no arguments, print out both the top-level directory and the
configuration directory
* Scripts/webkitpy/layout_tests/port/config.py:
(Config.build_directory):
When called with no arguments, get and cache both the top-level and configuration directories.
* Scripts/webkitpy/layout_tests/port/config_standalone.py:
(main):
* Scripts/webkitpy/layout_tests/port/config_unittest.py:
(ConfigTest.assert_configuration):
(ConfigTest.test_build_directory.mock_webkit_build_directory):
(ConfigTest.test_build_directory):
(ConfigTest.test_default_configuration__notfound):
* Scripts/webkitpy/layout_tests/port/webkit.py:
(WebKitPort._build_path):
Cache the build directory in the options object so that other users
of the options object don't need to call out to webkit-build-directory.
Also, properly support the existing --build-directory argument.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@106412
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-01-31 Ojan Vafai <ojan@chromium.org>
+
+ run-webkit-tests calls out to webkit-build-directory twice
+ https://bugs.webkit.org/show_bug.cgi?id=77248
+
+ Reviewed by Dirk Pranke.
+
+ * Scripts/webkit-build-directory:
+ If called with no arguments, print out both the top-level directory and the
+ configuration directory
+
+ * Scripts/webkitpy/layout_tests/port/config.py:
+ (Config.build_directory):
+ When called with no arguments, get and cache both the top-level and configuration directories.
+
+ * Scripts/webkitpy/layout_tests/port/config_standalone.py:
+ (main):
+ * Scripts/webkitpy/layout_tests/port/config_unittest.py:
+ (ConfigTest.assert_configuration):
+ (ConfigTest.test_build_directory.mock_webkit_build_directory):
+ (ConfigTest.test_build_directory):
+ (ConfigTest.test_default_configuration__notfound):
+ * Scripts/webkitpy/layout_tests/port/webkit.py:
+ (WebKitPort._build_path):
+ Cache the build directory in the options object so that other users
+ of the options object don't need to call out to webkit-build-directory.
+ Also, properly support the existing --build-directory argument.
+
2012-01-31 Ryosuke Niwa <rniwa@webkit.org>
Bump up the timeout for performance tests since DOM/DOMTable.html
'help|h' => \$showHelp,
);
-if (!$getOptionsResult || $showHelp || (!$showConfigurationDirectory && !$showTopLevelDirectory)) {
+if (!$getOptionsResult || $showHelp) {
print STDERR $usage;
exit 1;
}
-if ($showTopLevelDirectory) {
+if (!$showConfigurationDirectory && !$showTopLevelDirectory) {
+ print baseProductDir() . "\n";
+ print productDir() . "\n";
+} elsif ($showTopLevelDirectory) {
print baseProductDir() . "\n";
} else {
print productDir() . "\n";
flags = ["--configuration", self.flag_for_configuration(configuration)]
else:
configuration = ""
- flags = ["--top-level"]
+ flags = []
if not self._build_directories.get(configuration):
args = ["perl", self.script_path("webkit-build-directory")] + flags
- self._build_directories[configuration] = (
- self._executive.run_command(args, cwd=self.webkit_base_dir()).rstrip())
+ output = self._executive.run_command(args, cwd=self.webkit_base_dir()).rstrip()
+ parts = output.split("\n")
+ self._build_directories[configuration] = parts[0]
+
+ if len(parts) == 2:
+ default_configuration = parts[1][len(parts[0]):]
+ if default_configuration.startswith("/"):
+ default_configuration = default_configuration[1:]
+ self._build_directories[default_configuration] = parts[1]
return self._build_directories[configuration]
argv = sys.argv
if len(argv) == 3 and argv[1] == '--mock':
- e = executive_mock.MockExecutive2(output='foo')
+ e = executive_mock.MockExecutive2(output='foo\nfoo/%s' % argv[2])
fs = filesystem_mock.MockFileSystem({'foo/Configuration': argv[2]})
else:
e = executive.Executive()
def assert_configuration(self, contents, expected):
# This tests that a configuration file containing
# _contents_ ends up being interpreted as _expected_.
- c = self.make_config('foo', {'foo/Configuration': contents})
+ output = 'foo\nfoo/%s' % contents
+ c = self.make_config(output, {'foo/Configuration': contents})
self.assertEqual(c.default_configuration(), expected)
def test_build_directory(self):
# --top-level
def mock_webkit_build_directory(arg_list):
if arg_list == ['--top-level']:
- return '/WebKitBuild'
+ return '/WebKitBuild/'
elif arg_list == ['--configuration', '--debug']:
return '/WebKitBuild/Debug'
elif arg_list == ['--configuration', '--release']:
return '/WebKitBuild/Release'
+ elif arg_list == []:
+ return '/WebKitBuild/\n/WebKitBuild//Debug\n'
return 'Error'
def mock_run_command(arg_list):
return 'Error'
c = self.make_config(run_command_fn=mock_run_command)
- self.assertTrue(c.build_directory(None).endswith('WebKitBuild'))
+ self.assertEqual(c.build_directory(None), '/WebKitBuild/')
# Test again to check caching
- self.assertTrue(c.build_directory(None).endswith('WebKitBuild'))
+ self.assertEqual(c.build_directory(None), '/WebKitBuild/')
# Test other values
self.assertTrue(c.build_directory('Release').endswith('/Release'))
def test_default_configuration__notfound(self):
# This tests what happens if the default configuration file doesn't exist.
- c = self.make_config(output='foo', files={'foo/Configuration': None})
+ c = self.make_config(output='foo\nfoo/Release', files={'foo/Configuration': None})
self.assertEqual(c.default_configuration(), "Release")
def test_default_configuration__unknown(self):
def _build_path(self, *comps):
# --root is used for running with a pre-built root (like from a nightly zip).
- build_directory = self.get_option('root')
+ build_directory = self.get_option('root') or self.get_option('build_directory')
if not build_directory:
build_directory = self._config.build_directory(self.get_option('configuration'))
+ # Set --build-directory here Since this modifies the options object used by the worker subprocesses,
+ # it avoids the slow call out to build_directory in each subprocess.
+ self.set_option_default('build_directory', build_directory)
return self._filesystem.join(build_directory, *comps)
def _path_to_driver(self):