summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/test/foundation/Makefile2
-rw-r--r--lldb/test/foundation/TestConstStrings.py64
-rw-r--r--lldb/test/foundation/const-strings.m3
3 files changed, 68 insertions, 1 deletions
diff --git a/lldb/test/foundation/Makefile b/lldb/test/foundation/Makefile
index bcf886b02a0..43e0bb5d256 100644
--- a/lldb/test/foundation/Makefile
+++ b/lldb/test/foundation/Makefile
@@ -1,6 +1,8 @@
LEVEL = ../make
OBJC_SOURCES := main.m my-base.m
+#OBJC_SOURCES := const-strings.m
+
LDFLAGS = $(CFLAGS) -lobjc -framework Foundation
include $(LEVEL)/Makefile.rules
diff --git a/lldb/test/foundation/TestConstStrings.py b/lldb/test/foundation/TestConstStrings.py
new file mode 100644
index 00000000000..6ec3f0a0b4b
--- /dev/null
+++ b/lldb/test/foundation/TestConstStrings.py
@@ -0,0 +1,64 @@
+"""
+Test that objective-c constant strings are generated correctly by the expression
+parser.
+"""
+
+import os, time
+import unittest2
+import lldb
+from lldbtest import *
+
+@unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
+class ConstStringTestCase(TestBase):
+
+ mydir = "foundation"
+ d = {'OBJC_SOURCES': 'const-strings.m'}
+
+ def test_break_with_dsym(self):
+ """Test constant string generation amd comparison by the expression parser."""
+ self.buildDsym(dictionary=self.d)
+ self.objc_const_strings()
+
+ def test_break_with_dwarf(self):
+ """Test constant string generation amd comparison by the expression parser."""
+ self.buildDwarf(dictionary=self.d)
+ self.objc_const_strings()
+
+ def setUp(self):
+ # Call super's setUp().
+ TestBase.setUp(self)
+ # Find the line number to break inside main().
+ self.main_source = "const-strings.m"
+ self.line = line_number(self.main_source, '// Set breakpoint here.')
+
+ def objc_const_strings(self):
+ """Test constant string generation amd comparison by the expression parser."""
+ exe = os.path.join(os.getcwd(), "a.out")
+ self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
+
+ self.expect("breakpoint set -f %s -l %d" % (self.main_source, self.line),
+ BREAKPOINT_CREATED,
+ startstr = "Breakpoint created: 1: file ='%s', line = %d, locations = 1" %
+ (self.main_source, self.line))
+
+ self.runCmd("run", RUN_SUCCEEDED)
+ self.runCmd("process status")
+
+ self.expect('expression (int)[str compare:@"hello"]',
+ startstr = "(int) $0 = 0")
+ self.expect('expression (int)[str compare:@"world"]',
+ startstr = "(int) $1 = -1")
+
+ # Test empty strings, too.
+ self.expect('expression (int)[@"" length]',
+ startstr = "(int) $2 = 0")
+
+ self.expect('expression (int)[@"123" length]',
+ startstr = "(int) $3 = 3")
+
+
+if __name__ == '__main__':
+ import atexit
+ lldb.SBDebugger.Initialize()
+ atexit.register(lambda: lldb.SBDebugger.Terminate())
+ unittest2.main()
diff --git a/lldb/test/foundation/const-strings.m b/lldb/test/foundation/const-strings.m
index 07c408a84a4..8a43abee7b8 100644
--- a/lldb/test/foundation/const-strings.m
+++ b/lldb/test/foundation/const-strings.m
@@ -17,7 +17,8 @@ int main ()
NSString *str = [NSString stringWithCString:"hello" encoding:NSASCIIStringEncoding];
- NSLog(@"String \"%@\" has length %d", str, [str length]); // Breakpoint 1
+ NSLog(@"String \"%@\" has length %lu", str, [str length]); // Set breakpoint here.
[pool drain];
+ return 0;
}
OpenPOWER on IntegriCloud