Author: jdevlieghere Date: Wed Apr 10 07:30:00 2019 New Revision: 358088 URL: http://llvm.org/viewvc/llvm-project?rev=358088&view=rev Log: [testsuite] Split Obj-C foundation test
TestObjCMethods2.py was the third-longest running test on Darwin. By splitting it up, lit can exploit parallelism to reduce the total wall clock time. Added: lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSArray.py lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSError.py lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsString.py Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods2.py Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods2.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods2.py?rev=358088&r1=358087&r2=358088&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods2.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethods2.py Wed Apr 10 07:30:00 2019 @@ -5,8 +5,6 @@ Test more expression command sequences w from __future__ import print_function -import os -import time import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -18,40 +16,36 @@ class FoundationTestCase2(TestBase): mydir = TestBase.compute_mydir(__file__) - def setUp(self): - # Call super's setUp(). - TestBase.setUp(self) - # Find the line numbers to break at. - self.lines = [] - self.lines.append( + def test_expr_commands(self): + """More expression commands for objective-c.""" + self.build() + exe = self.getBuildArtifact("a.out") + self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) + + lines = [] + lines.append( line_number( 'main.m', '// Break here for selector: tests')) - self.lines.append( + lines.append( line_number( 'main.m', '// Break here for NSArray tests')) - self.lines.append( + lines.append( line_number( 'main.m', '// Break here for NSString tests')) - self.lines.append( + lines.append( line_number( 'main.m', '// Break here for description test')) - self.lines.append( + lines.append( line_number( 'main.m', '// Set break point at this line')) - def test_more_expr_commands(self): - """More expression commands for objective-c.""" - self.build() - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - # Create a bunch of breakpoints. - for line in self.lines: + for line in lines: lldbutil.run_break_set_by_file_and_line( self, "main.m", line, num_expected_locations=1, loc_exact=True) @@ -80,126 +74,3 @@ class FoundationTestCase2(TestBase): "description"]) self.runCmd("process continue") - - def test_NSArray_expr_commands(self): - """Test expression commands for NSArray.""" - self.build() - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # Break inside Test_NSArray: - line = self.lines[1] - lldbutil.run_break_set_by_file_and_line( - self, "main.m", line, num_expected_locations=1, loc_exact=True) - - self.runCmd("run", RUN_SUCCEEDED) - - # Test_NSArray: - self.runCmd("thread backtrace") - self.expect("expression (int)[nil_mutable_array count]", - patterns=["\(int\) \$.* = 0"]) - self.expect("expression (int)[array1 count]", - patterns=["\(int\) \$.* = 3"]) - self.expect("expression (int)[array2 count]", - patterns=["\(int\) \$.* = 3"]) - self.expect("expression (int)array1.count", - patterns=["\(int\) \$.* = 3"]) - self.expect("expression (int)array2.count", - patterns=["\(int\) \$.* = 3"]) - self.runCmd("process continue") - - def test_NSString_expr_commands(self): - """Test expression commands for NSString.""" - self.build() - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # Break inside Test_NSString: - line = self.lines[2] - lldbutil.run_break_set_by_file_and_line( - self, "main.m", line, num_expected_locations=1, loc_exact=True) - - self.runCmd("run", RUN_SUCCEEDED) - - # Test_NSString: - self.runCmd("thread backtrace") - self.expect("expression (int)[str length]", - patterns=["\(int\) \$.* ="]) - self.expect("expression (int)[str_id length]", - patterns=["\(int\) \$.* ="]) - self.expect("expression (id)[str description]", - patterns=["\(id\) \$.* = 0x"]) - self.expect("expression (id)[str_id description]", - patterns=["\(id\) \$.* = 0x"]) - self.expect("expression str.length") - self.expect('expression str = @"new"') - self.runCmd("image lookup -t NSString") - self.expect('expression str = (id)[NSString stringWithCString: "new"]') - self.runCmd("process continue") - - @expectedFailureAll(archs=["i[3-6]86"], bugnumber="<rdar://problem/28814052>") - def test_MyString_dump_with_runtime(self): - """Test dump of a known Objective-C object by dereferencing it.""" - self.build() - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - line = self.lines[4] - - lldbutil.run_break_set_by_file_and_line( - self, "main.m", line, num_expected_locations=1, loc_exact=True) - - self.runCmd("run", RUN_SUCCEEDED) - - self.expect( - "expression --show-types -- *my", - patterns=[ - "\(MyString\) \$.* = ", - "\(MyBase\)"]) - self.runCmd("process continue") - - @expectedFailureAll(archs=["i[3-6]86"], bugnumber="<rdar://problem/28814052>") - def test_runtime_types(self): - """Test commands that require runtime types""" - self.build() - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - # Break inside Test_NSString: - line = self.lines[2] - lldbutil.run_break_set_by_source_regexp( - self, "NSString tests") - - self.runCmd("run", RUN_SUCCEEDED) - - # Test_NSString: - self.runCmd("thread backtrace") - self.expect("expression [str length]", - patterns=["\(NSUInteger\) \$.* ="]) - self.expect("expression str.length") - self.expect('expression str = [NSString stringWithCString: "new"]') - self.expect( - 'po [NSError errorWithDomain:@"Hello" code:35 userInfo:@{@"NSDescription" : @"be completed."}]', - substrs=[ - "Error Domain=Hello", - "Code=35", - "be completed."]) - self.runCmd("process continue") - - @expectedFailureAll(archs=["i[3-6]86"], bugnumber="<rdar://problem/28814052>") - def test_NSError_p(self): - """Test that p of the result of an unknown method does require a cast.""" - self.build() - exe = self.getBuildArtifact("a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - line = self.lines[4] - - lldbutil.run_break_set_by_file_and_line( - self, "main.m", line, num_expected_locations=1, loc_exact=True) - - self.runCmd("run", RUN_SUCCEEDED) - - self.expect("p [NSError thisMethodIsntImplemented:0]", error=True, patterns=[ - "no known method", "cast the message send to the method's return type"]) - self.runCmd("process continue") Added: lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSArray.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSArray.py?rev=358088&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSArray.py (added) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSArray.py Wed Apr 10 07:30:00 2019 @@ -0,0 +1,37 @@ +""" +Test more expression command sequences with objective-c. +""" + +from __future__ import print_function + + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +@skipUnlessDarwin +class FoundationTestCaseNSArray(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def test_NSArray_expr_commands(self): + """Test expression commands for NSArray.""" + self.build() + self.target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( + self, '// Break here for NSArray tests', + lldb.SBFileSpec('main.m', False)) + + self.runCmd("thread backtrace") + self.expect("expression (int)[nil_mutable_array count]", + patterns=["\(int\) \$.* = 0"]) + self.expect("expression (int)[array1 count]", + patterns=["\(int\) \$.* = 3"]) + self.expect("expression (int)[array2 count]", + patterns=["\(int\) \$.* = 3"]) + self.expect("expression (int)array1.count", + patterns=["\(int\) \$.* = 3"]) + self.expect("expression (int)array2.count", + patterns=["\(int\) \$.* = 3"]) + self.runCmd("process continue") Added: lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSError.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSError.py?rev=358088&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSError.py (added) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsNSError.py Wed Apr 10 07:30:00 2019 @@ -0,0 +1,50 @@ +""" +Test more expression command sequences with objective-c. +""" + +from __future__ import print_function + + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +@skipUnlessDarwin +class FoundationTestCaseNSError(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @expectedFailureAll(archs=["i[3-6]86"], bugnumber="<rdar://problem/28814052>") + def test_runtime_types(self): + """Test commands that require runtime types""" + self.build() + self.target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( + self, '// Break here for NSString tests', + lldb.SBFileSpec('main.m', False)) + + # Test_NSString: + self.runCmd("thread backtrace") + self.expect("expression [str length]", + patterns=["\(NSUInteger\) \$.* ="]) + self.expect("expression str.length") + self.expect('expression str = [NSString stringWithCString: "new"]') + self.expect( + 'po [NSError errorWithDomain:@"Hello" code:35 userInfo:@{@"NSDescription" : @"be completed."}]', + substrs=[ + "Error Domain=Hello", + "Code=35", + "be completed."]) + self.runCmd("process continue") + + @expectedFailureAll(archs=["i[3-6]86"], bugnumber="<rdar://problem/28814052>") + def test_NSError_p(self): + """Test that p of the result of an unknown method does require a cast.""" + self.build() + self.target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( + self, '// Set break point at this line', + lldb.SBFileSpec('main.m', False)) + self.expect("p [NSError thisMethodIsntImplemented:0]", error=True, patterns=[ + "no known method", "cast the message send to the method's return type"]) + self.runCmd("process continue") Added: lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsString.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsString.py?rev=358088&view=auto ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsString.py (added) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/objc/foundation/TestObjCMethodsString.py Wed Apr 10 07:30:00 2019 @@ -0,0 +1,54 @@ +""" +Test more expression command sequences with objective-c. +""" + +from __future__ import print_function + + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +@skipUnlessDarwin +class FoundationTestCaseString(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def test_NSString_expr_commands(self): + """Test expression commands for NSString.""" + self.build() + self.target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( + self, '// Break here for NSString tests', + lldb.SBFileSpec('main.m', False)) + + # Test_NSString: + self.runCmd("thread backtrace") + self.expect("expression (int)[str length]", + patterns=["\(int\) \$.* ="]) + self.expect("expression (int)[str_id length]", + patterns=["\(int\) \$.* ="]) + self.expect("expression (id)[str description]", + patterns=["\(id\) \$.* = 0x"]) + self.expect("expression (id)[str_id description]", + patterns=["\(id\) \$.* = 0x"]) + self.expect("expression str.length") + self.expect('expression str = @"new"') + self.runCmd("image lookup -t NSString") + self.expect('expression str = (id)[NSString stringWithCString: "new"]') + self.runCmd("process continue") + + @expectedFailureAll(archs=["i[3-6]86"], bugnumber="<rdar://problem/28814052>") + def test_MyString_dump_with_runtime(self): + """Test dump of a known Objective-C object by dereferencing it.""" + self.build() + self.target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( + self, '// Set break point at this line', + lldb.SBFileSpec('main.m', False)) + self.expect( + "expression --show-types -- *my", + patterns=[ + "\(MyString\) \$.* = ", + "\(MyBase\)"]) + self.runCmd("process continue") _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits