Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / lldb / test / API / macosx / DBGSourcePathRemapping / TestDSYMSourcePathRemapping.py
blob3762651ceed37a0356370d50a3b78b2196b64d39
1 import lldb
2 from lldbsuite.test.decorators import *
3 import lldbsuite.test.lldbtest as lldbtest
4 import lldbsuite.test.lldbutil as lldbutil
5 import os
8 class TestDSYMSourcePathRemapping(lldbtest.TestBase):
9 def build(self):
10 botdir = self.getBuildArtifact("buildbot")
11 userdir = self.getBuildArtifact("user")
12 inputs = self.getSourcePath("Inputs")
13 lldbutil.mkdir_p(botdir)
14 lldbutil.mkdir_p(userdir)
15 import shutil
17 for f in ["main.c", "relative.c"]:
18 shutil.copyfile(os.path.join(inputs, f), os.path.join(botdir, f))
19 shutil.copyfile(os.path.join(inputs, f), os.path.join(userdir, f))
21 super(TestDSYMSourcePathRemapping, self).build()
23 # Remove the build sources.
24 self.assertTrue(os.path.isdir(botdir))
25 shutil.rmtree(botdir)
27 # Create a plist.
28 import subprocess
30 dsym = self.getBuildArtifact("a.out.dSYM")
31 uuid = (
32 subprocess.check_output(["/usr/bin/dwarfdump", "--uuid", dsym])
33 .decode("utf-8")
34 .split(" ")[1]
36 import re
38 self.assertTrue(re.match(r"[0-9a-fA-F-]+", uuid))
39 plist = os.path.join(dsym, "Contents", "Resources", uuid + ".plist")
40 with open(plist, "w") as f:
41 f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
42 f.write(
43 '<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n'
45 f.write('<plist version="1.0">\n')
46 f.write("<dict>\n")
47 f.write(" <key>DBGSourcePathRemapping</key>\n")
48 f.write(" <dict>\n")
49 f.write(" <key>" + os.path.realpath(botdir) + "</key>\n")
50 f.write(" <string>" + userdir + "</string>\n")
51 f.write(" </dict>\n")
52 f.write("</dict>\n")
53 f.write("</plist>\n")
55 @skipIf(debug_info=no_match("dsym"))
56 def test(self):
57 self.build()
59 target, process, _, _ = lldbutil.run_to_name_breakpoint(self, "main")
60 self.expect("source list -n main", substrs=["Hello Absolute"])
61 bkpt = target.BreakpointCreateByName("relative")
62 lldbutil.continue_to_breakpoint(process, bkpt)
63 self.expect("source list -n relative", substrs=["Hello Relative"])