forked from OSchip/llvm-project
Add a testcase for .dSYM path remapping dictionaries.
rdar://problem/56924558
This commit is contained in:
parent
b314414570
commit
2bbc4fdd8f
|
@ -0,0 +1,8 @@
|
|||
void stop() {}
|
||||
|
||||
int main()
|
||||
{
|
||||
stop();
|
||||
// Hello World!
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
BOTDIR = $(BUILDDIR)/buildbot
|
||||
USERDIR = $(BUILDDIR)/user
|
||||
C_SOURCES = $(BOTDIR)/main.c
|
||||
|
||||
include Makefile.rules
|
|
@ -0,0 +1,56 @@
|
|||
import lldb
|
||||
from lldbsuite.test.decorators import *
|
||||
import lldbsuite.test.lldbtest as lldbtest
|
||||
import lldbsuite.test.lldbutil as lldbutil
|
||||
import os
|
||||
import unittest2
|
||||
|
||||
|
||||
class TestDSYMSourcePathRemapping(lldbtest.TestBase):
|
||||
|
||||
mydir = lldbtest.TestBase.compute_mydir(__file__)
|
||||
|
||||
def build(self):
|
||||
botdir = self.getBuildArtifact('buildbot')
|
||||
userdir = self.getBuildArtifact('user')
|
||||
inputs = self.getSourcePath('Inputs')
|
||||
lldbutil.mkdir_p(botdir)
|
||||
lldbutil.mkdir_p(userdir)
|
||||
import shutil
|
||||
for f in ['main.c']:
|
||||
shutil.copyfile(os.path.join(inputs, f), os.path.join(botdir, f))
|
||||
shutil.copyfile(os.path.join(inputs, f), os.path.join(userdir, f))
|
||||
|
||||
super(TestDSYMSourcePathRemapping, self).build()
|
||||
|
||||
# Remove the build sources.
|
||||
self.assertTrue(os.path.isdir(botdir))
|
||||
shutil.rmtree(botdir)
|
||||
|
||||
# Create a plist.
|
||||
import subprocess
|
||||
dsym = self.getBuildArtifact('a.out.dSYM')
|
||||
uuid = subprocess.check_output(["/usr/bin/dwarfdump", "--uuid", dsym]
|
||||
).decode("utf-8").split(" ")[1]
|
||||
import re
|
||||
self.assertTrue(re.match(r'[0-9a-fA-F-]+', uuid))
|
||||
plist = os.path.join(dsym, 'Contents', 'Resources', uuid + '.plist')
|
||||
with open(plist, 'w') as f:
|
||||
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
|
||||
f.write('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n')
|
||||
f.write('<plist version="1.0">\n')
|
||||
f.write('<dict>\n')
|
||||
f.write(' <key>DBGSourcePathRemapping</key>\n')
|
||||
f.write(' <dict>\n')
|
||||
f.write(' <key>' + botdir + '</key>\n')
|
||||
f.write(' <string>' + userdir + '</string>\n')
|
||||
f.write(' </dict>\n')
|
||||
f.write('</dict>\n')
|
||||
f.write('</plist>\n')
|
||||
|
||||
|
||||
@skipIf(debug_info=no_match("dsym"))
|
||||
def test(self):
|
||||
self.build()
|
||||
lldbutil.run_to_name_breakpoint(self, 'main')
|
||||
self.expect("source list", substrs=["Hello World"])
|
Loading…
Reference in New Issue