159df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata"""Test custom import command to import files by path."""
259df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
359df36f99b76e33852e6848a162f5c2851074ea2Enrico Granataimport os, sys, time
459df36f99b76e33852e6848a162f5c2851074ea2Enrico Granataimport unittest2
559df36f99b76e33852e6848a162f5c2851074ea2Enrico Granataimport lldb
659df36f99b76e33852e6848a162f5c2851074ea2Enrico Granatafrom lldbtest import *
759df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
859df36f99b76e33852e6848a162f5c2851074ea2Enrico Granataclass ImportTestCase(TestBase):
959df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
1059df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    mydir = os.path.join("functionalities", "command_script", "import")
1159df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
1259df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    @python_api_test
136bc4dcdfbcdfa455299d2123011b82a77351ee72Daniel Malea    @skipIfLinux # causes buildbot failures, skip until we can investigate it
1459df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    def test_import_command(self):
1559df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        """Import some Python scripts by path and test them"""
1659df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.run_test()
1759df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
1859df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    def setUp(self):
1959df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        # Call super's setUp().
2059df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        TestBase.setUp(self)
2159df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
2259df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    def run_test(self):
2359df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        """Import some Python scripts by path and test them."""
2459df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
2559df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        # This is the function to remove the custom commands in order to have a
2659df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        # clean slate for the next test case.
2759df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        def cleanup():
2859df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata            self.runCmd('command script delete foo2cmd', check=False)
2959df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata            self.runCmd('command script delete foocmd', check=False)
3059df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata            self.runCmd('command script delete foobarcmd', check=False)
3159df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata            self.runCmd('command script delete barcmd', check=False)
3259df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata            self.runCmd('command script delete barothercmd', check=False)
33edeed2de0703606ef7d7a98c34e4059e505d0923Enrico Granata            self.runCmd('command script delete TPcommandA', check=False)
34edeed2de0703606ef7d7a98c34e4059e505d0923Enrico Granata            self.runCmd('command script delete TPcommandB', check=False)
3559df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
3659df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        # Execute the cleanup function during test case tear down.
3759df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.addTearDownHook(cleanup)
3859df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
39c315bdc8aa2ba51fca4d47bf61afa31c9118c0bdEnrico Granata        self.runCmd("command script import ./foo/foo.py --allow-reload")
40c315bdc8aa2ba51fca4d47bf61afa31c9118c0bdEnrico Granata        self.runCmd("command script import ./foo/foo2.py --allow-reload")
41c315bdc8aa2ba51fca4d47bf61afa31c9118c0bdEnrico Granata        self.runCmd("command script import ./foo/bar/foobar.py --allow-reload")
42c315bdc8aa2ba51fca4d47bf61afa31c9118c0bdEnrico Granata        self.runCmd("command script import ./bar/bar.py --allow-reload")
4359df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
4459df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.expect("command script import ./nosuchfile.py",
4559df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata                error=True, startstr='error: module importing failed')
4659df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.expect("command script import ./nosuchfolder/",
4759df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata                error=True, startstr='error: module importing failed')
4866068824402d94de2abe81c7e4472a4754572489Enrico Granata        self.expect("command script import ./foo/foo.py", error=False)
4959df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
50edeed2de0703606ef7d7a98c34e4059e505d0923Enrico Granata        self.runCmd("command script import --allow-reload ./thepackage")
51edeed2de0703606ef7d7a98c34e4059e505d0923Enrico Granata        self.expect("TPcommandA",substrs=["hello world A"])
52edeed2de0703606ef7d7a98c34e4059e505d0923Enrico Granata        self.expect("TPcommandB",substrs=["hello world B"])
53edeed2de0703606ef7d7a98c34e4059e505d0923Enrico Granata
5459df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.runCmd("script import dummymodule")
5566068824402d94de2abe81c7e4472a4754572489Enrico Granata        self.expect("command script import ./dummymodule.py", error=False)
5666068824402d94de2abe81c7e4472a4754572489Enrico Granata        self.expect("command script import --allow-reload ./dummymodule.py", error=False)
5759df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
5859df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.runCmd("command script add -f foo.foo_function foocmd")
5959df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.runCmd("command script add -f foobar.foo_function foobarcmd")
6059df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.runCmd("command script add -f bar.bar_function barcmd")
6159df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.expect("foocmd hello",
6259df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata                substrs = ['foo says', 'hello'])
6359df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.expect("foo2cmd hello",
6459df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata                substrs = ['foo2 says', 'hello'])
6559df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.expect("barcmd hello",
6659df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata                substrs = ['barutil says', 'bar told me', 'hello'])
6759df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.expect("barothercmd hello",
6859df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata                substrs = ['barutil says', 'bar told me', 'hello'])
6959df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata        self.expect("foobarcmd hello",
7059df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata                substrs = ['foobar says', 'hello'])
7159df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
7259df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata
7359df36f99b76e33852e6848a162f5c2851074ea2Enrico Granataif __name__ == '__main__':
7459df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    import atexit
7559df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    lldb.SBDebugger.Initialize()
7659df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    atexit.register(lambda: lldb.SBDebugger.Terminate())
7759df36f99b76e33852e6848a162f5c2851074ea2Enrico Granata    unittest2.main()
78