brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 8425ab0 Raw
72 lines · python
1"""2Tests large source files are not locked on Windows when source cache is disabled3"""4 5import lldb6import os7from lldbsuite.test.decorators import *8from lldbsuite.test.lldbtest import *9from lldbsuite.test import lldbutil10from shutil import copy11 12 13class SettingsUseSourceCacheTestCase(TestBase):14    NO_DEBUG_INFO_TESTCASE = True15 16    def test_set_use_source_cache_false(self):17        """Test that after 'set use-source-cache false', files are not locked."""18        self.set_use_source_cache_and_test(False)19 20    @skipIf(hostoslist=no_match(["windows"]))21    def test_set_use_source_cache_true(self):22        """Test that after 'set use-source-cache true', files are locked."""23        self.set_use_source_cache_and_test(True)24 25    def set_use_source_cache_and_test(self, is_cache_enabled):26        """Common test for both True/False values of use-source-cache."""27        self.build()28 29        # Enable/Disable source cache30        self.runCmd(31            "settings set use-source-cache " + ("true" if is_cache_enabled else "false")32        )33 34        # Get paths for the main source file.35        src = self.getBuildArtifact("main-copy.cpp")36        self.assertTrue(src)37 38        # Make sure source file is bigger than 16K to trigger memory mapping39        self.assertGreater(os.stat(src).st_size, 4 * 4096)40 41        target, process, thread, breakpoint = lldbutil.run_to_name_breakpoint(42            self, "calc"43        )44 45        # Show the source file contents to make sure LLDB loads src file.46        self.runCmd("source list")47 48        # Try overwriting the source file.49        is_file_overwritten = self.overwriteFile(src)50 51        if is_cache_enabled:52            self.assertFalse(53                is_file_overwritten,54                "Source cache is enabled, but writing to file succeeded",55            )56 57        if not is_cache_enabled:58            self.assertTrue(59                is_file_overwritten,60                "Source cache is disabled, but writing to file failed",61            )62 63    def overwriteFile(self, src):64        """Write to file and return true iff file was successfully written."""65        try:66            f = open(src, "w")67            f.writelines(["// hello world\n"])68            f.close()69            return True70        except Exception:71            return False72