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.
_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):
_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)")
break
_log.debug("Deleting redundant virtual root expected result.")
- self._scm.delete(virtual_root_expected_baseline_path)
+ if self._skip_scm_commands and virtual_root_expected_baseline_path in self._files_to_add:
+ self._files_to_add.remove(virtual_root_expected_baseline_path)
+ if self._scm.exists(virtual_root_expected_baseline_path):
+ _log.debug(" Deleting (SCM): " + 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)
+ else:
+ _log.debug(" Deleting (file system): " + virtual_root_expected_baseline_path)
+ self._filesystem.remove(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.
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