Skip to content

Commit c6a6439

Browse files
committed
Make TestSwiftResilience a more realistic approximation of real-world code.
This patch changes the test to build a resilient dylib, put a binary .swiftmodule into the dylib's debug info, vend a textual .swiftinterface to the main application. It's unrealistic to assume that the main application would be built against an out-of-date binary .swiftmodule.
1 parent a5f9cd2 commit c6a6439

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

lldb/test/API/lang/swift/resilience/Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,16 @@ libmod.%.dylib: mod.%.swift
1212
VPATH=$(SRCDIR) -I $(SRCDIR) -f $(SRCDIR)/dylib.mk all
1313
mv libmod.dylib $@
1414
mv libmod.dylib.dSYM $@.dSYM || true
15-
mv mod.swiftmodule mod.$*.swiftmodule
15+
rm mod.swiftmodule
16+
mv mod.swiftinterface mod.$*.swiftinterface
1617
mv mod.o mod.$*.o
1718
rm mod.swift mod.partial.swiftmodule
1819

1920
main.%: main.swift
2021
ln -sf libmod.$*.dylib libmod.dylib
2122
ln -sf libmod.$*.dylib.dSYM libmod.dylib.dSYM
2223
ln -sf mod.$*.swiftdoc mod.swiftdoc
23-
ln -sf mod.$*.swiftmodule mod.swiftmodule
24+
ln -sf mod.$*.swiftinterface mod.swiftinterface
2425
$(MAKE) MAKE_DSYM=$(MAKE_DSYM) CC=$(CC) SWIFTC=$(SWIFTC) \
2526
ARCH=$(ARCH) DSYMUTIL=$(DSYMUTIL) \
2627
VPATH=$(SRCDIR) -I $(SRCDIR) -f $(SRCDIR)/exe.mk all

lldb/test/API/lang/swift/resilience/TestSwiftResilience.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,27 +28,34 @@ class TestSwiftResilience(TestBase):
2828

2929
@skipUnlessDarwin
3030
@swiftTest
31+
# Because we rename the .swiftmodule files after building the
32+
# N_AST symbol table entry is out of sync, whereas dsymutil
33+
# captures the right one before the rename.
34+
@skipIf(debug_info=no_match(["dsym"]))
3135
def test_cross_module_extension_a_a(self):
3236
"""Test that LLDB can debug across resilient boundaries"""
3337
self.build()
3438
self.doTestWithFlavor("a", "a")
3539

3640
@skipUnlessDarwin
3741
@swiftTest
42+
@skipIf(debug_info=no_match(["dsym"]))
3843
def test_cross_module_extension_a_b(self):
3944
"""Test that LLDB can debug across resilient boundaries"""
4045
self.build()
4146
self.doTestWithFlavor("a", "b")
4247

4348
@skipUnlessDarwin
4449
@swiftTest
50+
@skipIf(debug_info=no_match(["dsym"]))
4551
def test_cross_module_extension_b_a(self):
4652
"""Test that LLDB can debug across resilient boundaries"""
4753
self.build()
4854
self.doTestWithFlavor("b", "a")
4955

5056
@skipUnlessDarwin
5157
@swiftTest
58+
@skipIf(debug_info=no_match(["dsym"]))
5259
def test_cross_module_extension_b_b(self):
5360
"""Test that LLDB can debug across resilient boundaries"""
5461
self.build()
@@ -66,7 +73,7 @@ def createSymlinks(self, exe_flavor, mod_flavor):
6673
execute_command("ln -sf " + self.getBuildArtifact("libmod." + exe_flavor + ".dylib.dSYM") + " " + self.getBuildArtifact("libmod.dylib.dSYM"))
6774
execute_command("ln -sf " + self.getBuildArtifact("mod." + exe_flavor + ".o") + " " + self.getBuildArtifact("mod.o"))
6875

69-
execute_command("ln -sf " + self.getBuildArtifact("mod." + exe_flavor + ".swiftmodule") + " " + self.getBuildArtifact("mod.swiftmodule"))
76+
execute_command("ln -sf " + self.getBuildArtifact("mod." + exe_flavor + ".swiftinterface") + " " + self.getBuildArtifact("mod.swiftinterface"))
7077

7178
def cleanupSymlinks(self):
7279
execute_command(

0 commit comments

Comments
 (0)