Index: Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py |
diff --git a/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py b/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py |
index 87fbd8e91f75868f90845c7510e93bb99f982c5c..a6d6ac198b14b1a15772f21b6fc1452449703632 100644 |
--- a/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py |
+++ b/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py |
@@ -48,9 +48,12 @@ def _invert_dictionary(dictionary): |
class BaselineOptimizer(object): |
ROOT_LAYOUT_TESTS_DIRECTORY = 'LayoutTests' |
- def __init__(self, host, port_names): |
+ def __init__(self, host, port_names, skip_scm_commands): |
self._filesystem = host.filesystem |
self._port_factory = host.port_factory |
+ self._skip_scm_commands = skip_scm_commands |
+ self._files_to_delete = [] |
+ self._files_to_add = [] |
self._scm = host.scm() |
self._port_names = port_names |
# Only used by unittests. |
@@ -224,7 +227,10 @@ class BaselineOptimizer(object): |
_log.debug(" Deleting (SCM):") |
for platform_dir in sorted(self._platform(filename) for filename in scm_files): |
_log.debug(" " + platform_dir) |
- self._scm.delete_list(scm_files) |
+ if self._skip_scm_commands: |
+ self._files_to_delete.extend(scm_files) |
+ else: |
+ self._scm.delete_list(scm_files) |
if fs_files: |
_log.debug(" Deleting (file system):") |
for platform_dir in sorted(self._platform(filename) for filename in fs_files): |
@@ -246,7 +252,12 @@ class BaselineOptimizer(object): |
_log.debug(" Adding:") |
for platform_dir in sorted(self._platform(filename) for filename in file_names): |
_log.debug(" " + platform_dir) |
- self._scm.add_list(file_names) |
+ if self._skip_scm_commands: |
+ # Have adds win over deletes. |
+ self._files_to_delete = list(set(self._files_to_delete) - set(file_names)) |
+ self._files_to_add.extend(file_names) |
+ else: |
+ self._scm.add_list(file_names) |
else: |
_log.debug(" (Nothing to add)") |
@@ -303,7 +314,10 @@ class BaselineOptimizer(object): |
break |
_log.debug("Deleting redundant virtual root expected result.") |
- self._scm.delete(virtual_root_expected_baseline_path) |
+ if self._skip_scm_commands: |
+ self._files_to_delete.append(virtual_root_expected_baseline_path) |
+ else: |
+ self._scm.delete(virtual_root_expected_baseline_path) |
def optimize(self, baseline_name): |
# The virtual fallback path is the same as the non-virtual one tacked on to the bottom of the non-virtual path. |
@@ -316,10 +330,10 @@ class BaselineOptimizer(object): |
result = self._optimize_subtree(baseline_name) |
non_virtual_baseline_name = self._port_factory.get().lookup_virtual_test_base(baseline_name) |
if not non_virtual_baseline_name: |
- return result |
+ return result, self._files_to_delete, self._files_to_add |
self._optimize_virtual_root(baseline_name, non_virtual_baseline_name) |
_log.debug("Optimizing non-virtual fallback path.") |
result |= self._optimize_subtree(non_virtual_baseline_name) |
- return result |
+ return result, self._files_to_delete, self._files_to_add |