Title: [293132] trunk/Tools
Revision
293132
Author
ross.kirsl...@sony.com
Date
2022-04-20 17:30:33 -0700 (Wed, 20 Apr 2022)

Log Message

[LayoutTests][Win] Tests can fail if long paths are not enabled in registry.
https://bugs.webkit.org/show_bug.cgi?id=188092

Reviewed by Basuke Suzuki.

Python 3.6 supports long file paths on Windows by default so long as LongPathsEnabled is set in
HKLM\System\CurrentControlSet\Control\FileSystem. This patch adds that key to webkitpy's registry editing.

* Scripts/webkitpy/port/win.py:
(WinPort):
(WinPort.set_long_paths_enabled): Added.
(WinPort.restore_long_paths_enabled): Added.
(WinPort.setup_test_run):
(WinPort.clean_up_test_run):

Canonical link: https://commits.webkit.org/249834@main

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (293131 => 293132)


--- trunk/Tools/ChangeLog	2022-04-21 00:25:03 UTC (rev 293131)
+++ trunk/Tools/ChangeLog	2022-04-21 00:30:33 UTC (rev 293132)
@@ -1,3 +1,20 @@
+2022-04-20  Ross Kirsling  <ross.kirsl...@sony.com>
+
+        [LayoutTests][Win] Tests can fail if long paths are not enabled in registry.
+        https://bugs.webkit.org/show_bug.cgi?id=188092
+
+        Reviewed by Basuke Suzuki.
+
+        Python 3.6 supports long file paths on Windows by default so long as LongPathsEnabled is set in
+        HKLM\System\CurrentControlSet\Control\FileSystem. This patch adds that key to webkitpy's registry editing.
+
+        * Scripts/webkitpy/port/win.py:
+        (WinPort):
+        (WinPort.set_long_paths_enabled): Added.
+        (WinPort.restore_long_paths_enabled): Added.
+        (WinPort.setup_test_run):
+        (WinPort.clean_up_test_run):
+
 2022-04-20  Megan Gardner  <megan_gard...@apple.com>
 
         Address recent deprecation warnings on iOS.

Modified: trunk/Tools/Scripts/webkitpy/port/win.py (293131 => 293132)


--- trunk/Tools/Scripts/webkitpy/port/win.py	2022-04-21 00:25:03 UTC (rev 293131)
+++ trunk/Tools/Scripts/webkitpy/port/win.py	2022-04-21 00:30:33 UTC (rev 293132)
@@ -75,6 +75,7 @@
         WOW64_POST_MORTEM_DEBUGGER_KEY = r'SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug'
         WINDOWS_ERROR_REPORTING_KEY = r'SOFTWARE\Microsoft\Windows\Windows Error Reporting'
         WOW64_WINDOWS_ERROR_REPORTING_KEY = r'SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting'
+        FILE_SYSTEM_KEY = r'SYSTEM\CurrentControlSet\Control\FileSystem'
         _HKLM = _winreg.HKEY_LOCAL_MACHINE
         _HKCU = _winreg.HKEY_CURRENT_USER
         _REG_DWORD = _winreg.REG_DWORD
@@ -84,6 +85,7 @@
         WOW64_POST_MORTEM_DEBUGGER_KEY = "/%s/SOFTWARE/Wow6432Node/Microsoft/Windows NT/CurrentVersion/AeDebug/%s"
         WINDOWS_ERROR_REPORTING_KEY = "/%s/SOFTWARE/Microsoft/Windows/Windows Error Reporting/%s"
         WOW64_WINDOWS_ERROR_REPORTING_KEY = "/%s/SOFTWARE/Wow6432Node/Microsoft/Windows/Windows Error Reporting/%s"
+        FILE_SYSTEM_KEY = "/%s/SYSTEM/CurrentControlSet/Control/FileSystem/%s"
         _HKLM = "HKLM"
         _HKCU = "HKCU"
         _REG_DWORD = "-d"
@@ -95,6 +97,8 @@
     previous_error_reporting_values = {}
     previous_wow64_error_reporting_values = {}
 
+    previous_file_system_values = {}
+
     def __init__(self, host, port_name, **kwargs):
         ApplePort.__init__(self, host, port_name, **kwargs)
         if len(port_name.split('-')) > 1:
@@ -373,6 +377,17 @@
         for key, value in self.previous_wow64_error_reporting_values.items():
             self.write_registry_value(self.WOW64_WINDOWS_ERROR_REPORTING_KEY, key[0], key[1], key[2], value[1], value[0])
 
+    def set_long_paths_enabled(self):
+        key = 'LongPathsEnabled'
+        value = [1, self._REG_DWORD]
+        self.previous_file_system_values[key] = self.read_registry_value(self.FILE_SYSTEM_KEY, '--wow64', self._HKLM, key)
+        self.write_registry_value(self.FILE_SYSTEM_KEY, '--wow64', self._HKLM, key, value[1], value[0])
+
+    def restore_long_paths_enabled(self):
+        key = 'LongPathsEnabled'
+        value = self.previous_file_system_values[key]
+        self.write_registry_value(self.FILE_SYSTEM_KEY, '--wow64', self._HKLM, key, value[1], value[0])
+
     def delete_sem_locks(self):
         if self.is_cygwin():
             os.system("rm -rf /dev/shm/sem.*")
@@ -390,11 +405,13 @@
         atexit.register(self.restore_crash_log_saving)
         self.setup_crash_log_saving()
         self.prevent_error_dialogs()
+        self.set_long_paths_enabled()
         self.delete_sem_locks()
         self.delete_preference_files()
         super(WinPort, self).setup_test_run(device_type)
 
     def clean_up_test_run(self):
+        self.restore_long_paths_enabled()
         self.allow_error_dialogs()
         self.restore_crash_log_saving()
         super(WinPort, self).clean_up_test_run()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to