https://github.com/slydiman updated https://github.com/llvm/llvm-project/pull/91918
>From 4eee83a3a6b923075a9e6db217349726780c31f4 Mon Sep 17 00:00:00 2001 From: Dmitry Vasilyev <dvassil...@accesssoftek.com> Date: Mon, 13 May 2024 10:34:04 +0400 Subject: [PATCH] [lldb] Fix the test TestGdbRemotePlatformFile It is necessary to transfer the test file to/from the really remote target (for example Windows host and Linux target). Also ignore chmod check in case of Windows host. --- .../lldb-server/TestGdbRemotePlatformFile.py | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/lldb/test/API/tools/lldb-server/TestGdbRemotePlatformFile.py b/lldb/test/API/tools/lldb-server/TestGdbRemotePlatformFile.py index 4c8ce01e8ba31..2e1c72ee56d7a 100644 --- a/lldb/test/API/tools/lldb-server/TestGdbRemotePlatformFile.py +++ b/lldb/test/API/tools/lldb-server/TestGdbRemotePlatformFile.py @@ -1,6 +1,7 @@ # lldb test suite imports from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import TestBase +from lldbsuite.test import lldbutil # gdb-remote-specific imports import lldbgdbserverutils @@ -117,6 +118,7 @@ def test_platform_file_wronly_creat_excl_fail(self): temp_file = self.getBuildArtifact("test") with open(temp_file, "wb"): pass + temp_file = lldbutil.install_to_target(self, temp_file) # attempt to open the file with O_CREAT|O_EXCL self.do_handshake() @@ -140,6 +142,7 @@ def test_platform_file_size(self): test_data = b"test data of some length" with open(temp_path, "wb") as temp_file: temp_file.write(test_data) + temp_path = lldbutil.install_to_target(self, temp_path) self.do_handshake() self.test_sequence.add_log_lines( @@ -167,7 +170,11 @@ def test_platform_file_mode(self): test_mode = 0o751 with open(temp_path, "wb") as temp_file: - os.chmod(temp_file.fileno(), test_mode) + if lldbplatformutil.getHostPlatform() == "windows": + test_mode = 0o700 + else: + os.chmod(temp_file.fileno(), test_mode) + temp_path = lldbutil.install_to_target(self, temp_path) self.do_handshake() self.test_sequence.add_log_lines( @@ -213,6 +220,7 @@ def test_platform_file_exists(self): temp_path = self.getBuildArtifact("test") with open(temp_path, "wb"): pass + temp_path = lldbutil.install_to_target(self, temp_path) self.do_handshake() self.test_sequence.add_log_lines( @@ -244,6 +252,10 @@ def test_platform_file_exists_not(self): self.expect_gdbremote_sequence() @skipIfWindows + # FIXME: lldb.remote_platform.Install() cannot copy opened temp file on Windows. + # It is possible to use tempfile.NamedTemporaryFile(..., delete=False) and + # delete the temp file manually at the end. + @skipIf(hostoslist=["windows"]) @add_test_categories(["llgs"]) def test_platform_file_fstat(self): server = self.connect_to_debug_monitor() @@ -252,12 +264,13 @@ def test_platform_file_fstat(self): with tempfile.NamedTemporaryFile() as temp_file: temp_file.write(b"some test data for stat") temp_file.flush() + temp_path = lldbutil.install_to_target(self, temp_file.name) self.do_handshake() self.test_sequence.add_log_lines( [ "read packet: $vFile:open:%s,0,0#00" - % (binascii.b2a_hex(temp_file.name.encode()).decode(),), + % (binascii.b2a_hex(temp_path.encode()).decode(),), { "direction": "send", "regex": r"^\$F([0-9a-fA-F]+)#[0-9a-fA-F]{2}$", @@ -359,9 +372,12 @@ def vFile_test( if creat: self.assertFalse(os.path.exists(temp_path)) + if lldb.remote_platform: + temp_path = lldbutil.append_to_process_working_directory(self, "test") else: with open(temp_path, "wb") as temp_file: temp_file.write(test_data.encode()) + temp_path = lldbutil.install_to_target(self, temp_path) # open the file for reading self.do_handshake() @@ -448,8 +464,19 @@ def vFile_test( if write: # check if the data was actually written + if lldb.remote_platform: + local_path = self.getBuildArtifact("file_from_target") + error = lldb.remote_platform.Get( + lldb.SBFileSpec(temp_path, False), lldb.SBFileSpec(local_path, True) + ) + self.assertTrue( + error.Success(), + "Reading file {0} failed: {1}".format(temp_path, error), + ) + temp_path = local_path + with open(temp_path, "rb") as temp_file: - if creat: + if creat and lldbplatformutil.getHostPlatform() != "windows": self.assertEqual( os.fstat(temp_file.fileno()).st_mode & 0o7777, 0o640 ) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits