1c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen""" 2c48dc6fc780a31c1c431835e3b74a5474caede81Johnny ChenTest that lldb command "command source" works correctly. 3eefdff0b16eb15f1f03c0a98c92f375e92ae5ac2Johnny Chen 4eefdff0b16eb15f1f03c0a98c92f375e92ae5ac2Johnny ChenSee also http://llvm.org/viewvc/llvm-project?view=rev&revision=109673. 5c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen""" 6c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen 73f5e90a19881884408003ed01b04b4a29b3bd2fdJohnny Chenimport os, sys 875e28f942c1b9f9c6d5a0d5f2efd037cbbc9fc74Johnny Chenimport unittest2 9c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chenimport lldb 10d85dae5a089177582aff128c897c78332167fe08Johnny Chenfrom lldbtest import * 11c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen 121c42e8684d26e1473f92c799eeae65a3eec991d6Johnny Chenclass CommandSourceTestCase(TestBase): 13c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen 143f8dff9568c93f873b95673f2a648434701f85faJohnny Chen mydir = os.path.join("functionalities", "command_source") 15c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen 16c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen def test_command_source(self): 17c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen """Test that lldb command "command source" works correctly.""" 18c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen 19c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen # Sourcing .lldb in the current working directory, which in turn imports 20c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen # the "my" package that defines the date() function. 2184e8179c4d8c5ce9aa3dbdd875f09d06517e7366Johnny Chen self.runCmd("command source .lldb") 22c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen 2330e40931d2f7177be7d233cd06ed190bda889935Johnny Chen # Let's temporarily redirect the stdout to our StringIO session object 2430e40931d2f7177be7d233cd06ed190bda889935Johnny Chen # in order to capture the script evaluation output. 2530e40931d2f7177be7d233cd06ed190bda889935Johnny Chen old_stdout = sys.stdout 2630e40931d2f7177be7d233cd06ed190bda889935Johnny Chen session = StringIO.StringIO() 2730e40931d2f7177be7d233cd06ed190bda889935Johnny Chen sys.stdout = session 2830e40931d2f7177be7d233cd06ed190bda889935Johnny Chen 29eefdff0b16eb15f1f03c0a98c92f375e92ae5ac2Johnny Chen # Python should evaluate "my.date()" successfully. 30281aed3744d26477929ec0c0108b8ab3a910aec4Johnny Chen # Pass 'check=False' so that sys.stdout gets restored unconditionally. 31281aed3744d26477929ec0c0108b8ab3a910aec4Johnny Chen self.runCmd("script my.date()", check=False) 32c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen 331ae2c3663ad8152c3d2d72c2146f8c41e7147845Johnny Chen # Now restore stdout to the way we were. :-) 341ae2c3663ad8152c3d2d72c2146f8c41e7147845Johnny Chen sys.stdout = old_stdout 351ae2c3663ad8152c3d2d72c2146f8c41e7147845Johnny Chen 3630e40931d2f7177be7d233cd06ed190bda889935Johnny Chen import datetime 3730e40931d2f7177be7d233cd06ed190bda889935Johnny Chen self.expect(session.getvalue(), "script my.date() runs successfully", 3830e40931d2f7177be7d233cd06ed190bda889935Johnny Chen exe=False, 3930e40931d2f7177be7d233cd06ed190bda889935Johnny Chen substrs = [str(datetime.date.today())]) 4030e40931d2f7177be7d233cd06ed190bda889935Johnny Chen 41c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen 42c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chenif __name__ == '__main__': 4388f8304a5b7864ce3c6966bc0250fa3b7069aef0Johnny Chen import atexit 44c48dc6fc780a31c1c431835e3b74a5474caede81Johnny Chen lldb.SBDebugger.Initialize() 4588f8304a5b7864ce3c6966bc0250fa3b7069aef0Johnny Chen atexit.register(lambda: lldb.SBDebugger.Terminate()) 4675e28f942c1b9f9c6d5a0d5f2efd037cbbc9fc74Johnny Chen unittest2.main() 47