Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Tools / Scripts / webkitpy / common / checkout / baselineoptimizer.py
index 87fbd8e..29725c0 100644 (file)
@@ -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,17 @@ 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 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.
@@ -316,10 +337,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