diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 | 
| commit | 9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc (patch) | |
| tree | dd2a1ddf0476664c2b823409c36cbccd52662ca7 /packages/Python/lldbsuite/test/functionalities/abbreviation | |
| parent | 3bd2e91faeb9eeec1aae82c64a3253afff551cfd (diff) | |
Notes
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/abbreviation')
3 files changed, 141 insertions, 0 deletions
| diff --git a/packages/Python/lldbsuite/test/functionalities/abbreviation/.categories b/packages/Python/lldbsuite/test/functionalities/abbreviation/.categories new file mode 100644 index 000000000000..3a3f4df6416b --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/abbreviation/.categories @@ -0,0 +1 @@ +cmdline diff --git a/packages/Python/lldbsuite/test/functionalities/abbreviation/TestAbbreviations.py b/packages/Python/lldbsuite/test/functionalities/abbreviation/TestAbbreviations.py new file mode 100644 index 000000000000..1bce5bed491f --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/abbreviation/TestAbbreviations.py @@ -0,0 +1,101 @@ +""" +Test some lldb command abbreviations and aliases for proper resolution. +""" + +from __future__ import print_function + + + +import os, time +import lldb +from lldbsuite.test.lldbtest import * +import lldbsuite.test.lldbutil as lldbutil + +class AbbreviationsTestCase(TestBase): + +    mydir = TestBase.compute_mydir(__file__) + +    @expectedFlakeyFreeBSD("llvm.org/pr22611 thread race condition breaks prompt setting") +    @no_debug_info_test +    def test_command_abbreviations_and_aliases (self): +        command_interpreter = self.dbg.GetCommandInterpreter() +        self.assertTrue(command_interpreter, VALID_COMMAND_INTERPRETER) +        result = lldb.SBCommandReturnObject() + +        # Check that abbreviations are expanded to the full command. +        command_interpreter.ResolveCommand("ap script", result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual("apropos script", result.GetOutput()) + +        command_interpreter.ResolveCommand("h", result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual("help", result.GetOutput()) + +        # Check resolution of abbreviations for multi-word commands. +        command_interpreter.ResolveCommand("lo li", result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual("log list", result.GetOutput()) + +        command_interpreter.ResolveCommand("br s", result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual("breakpoint set", result.GetOutput()) + +        # Try an ambiguous abbreviation. +        # "pl" could be "platform" or "plugin". +        command_interpreter.ResolveCommand("pl", result) +        self.assertFalse(result.Succeeded()) +        self.assertTrue(result.GetError().startswith("Ambiguous command")) + +        # Make sure an unabbreviated command is not mangled. +        command_interpreter.ResolveCommand("breakpoint set --name main --line 123", result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual("breakpoint set --name main --line 123", result.GetOutput()) + +        # Create some aliases. +        self.runCmd("com a alias com al") +        self.runCmd("alias gurp help") + +        # Check that an alias is replaced with the actual command +        command_interpreter.ResolveCommand("gurp target create", result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual("help target create", result.GetOutput()) + +        # Delete the alias and make sure it no longer has an effect. +        self.runCmd("com u gurp") +        command_interpreter.ResolveCommand("gurp", result) +        self.assertFalse(result.Succeeded()) + +        # Check aliases with text replacement. +        self.runCmd("alias pltty process launch -s -o %1 -e %1") +        command_interpreter.ResolveCommand("pltty /dev/tty0", result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual("process launch -s -o /dev/tty0 -e /dev/tty0", result.GetOutput()) + +        self.runCmd("alias xyzzy breakpoint set -n %1 -l %2") +        command_interpreter.ResolveCommand("xyzzy main 123", result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual("breakpoint set -n main -l 123", result.GetOutput().strip()) + +        # And again, without enough parameters. +        command_interpreter.ResolveCommand("xyzzy main", result) +        self.assertFalse(result.Succeeded()) + +        # Check a command that wants the raw input. +        command_interpreter.ResolveCommand(r'''sc print("\n\n\tHello!\n")''', result) +        self.assertTrue(result.Succeeded()) +        self.assertEqual(r'''script print("\n\n\tHello!\n")''', result.GetOutput()) + +        # Prompt changing stuff should be tested, but this doesn't seem like the +        # right test to do it in.  It has nothing to do with aliases or abbreviations. +        #self.runCmd("com sou ./change_prompt.lldb") +        #self.expect("settings show prompt", +        #            startstr = 'prompt (string) = "[with-three-trailing-spaces]   "') +        #self.runCmd("settings clear prompt") +        #self.expect("settings show prompt", +        #            startstr = 'prompt (string) = "(lldb) "') +        #self.runCmd("se se prompt 'Sycamore> '") +        #self.expect("se sh prompt", +        #            startstr = 'prompt (string) = "Sycamore> "') +        #self.runCmd("se cl prompt") +        #self.expect("set sh prompt", +        #            startstr = 'prompt (string) = "(lldb) "') diff --git a/packages/Python/lldbsuite/test/functionalities/abbreviation/TestCommonShortSpellings.py b/packages/Python/lldbsuite/test/functionalities/abbreviation/TestCommonShortSpellings.py new file mode 100644 index 000000000000..9edbf212278c --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/abbreviation/TestCommonShortSpellings.py @@ -0,0 +1,39 @@ +""" +Test some lldb command abbreviations to make sure the common short spellings of +many commands remain available even after we add/delete commands in the future. +""" + +from __future__ import print_function + + + +import os, time +import lldb +from lldbsuite.test.lldbtest import * +import lldbsuite.test.lldbutil as lldbutil + +class CommonShortSpellingsTestCase(TestBase): +     +    mydir = TestBase.compute_mydir(__file__) + +    @no_debug_info_test +    def test_abbrevs2 (self): +        command_interpreter = self.dbg.GetCommandInterpreter() +        self.assertTrue(command_interpreter, VALID_COMMAND_INTERPRETER) +        result = lldb.SBCommandReturnObject() + +        abbrevs = [ +            ('br s', 'breakpoint set'), +            ('disp', '_regexp-display'),  # a.k.a., 'display' +            ('di', 'disassemble'), +            ('dis', 'disassemble'), +            ('ta st a', 'target stop-hook add'), +            ('fr v', 'frame variable'), +            ('f 1', 'frame select 1'), +            ('ta st li', 'target stop-hook list'), +        ] + +        for (short_val, long_val) in abbrevs: +            command_interpreter.ResolveCommand(short_val, result) +            self.assertTrue(result.Succeeded()) +            self.assertEqual(long_val, result.GetOutput()) | 
