The plugins completion test was checking completions for the abi
plugins. But the available abi plugins will depend on which
[targets](42d2ae1034/lldb/source/Plugins/ABI/CMakeLists.txt (L7))
are enabled in the cmake build configuration.
This PR updates the test to check for the json object file instead which
should be enabled on all builds.
109 lines
4.1 KiB
Python
109 lines
4.1 KiB
Python
"""
|
|
Make sure the plugin list, enable, and disable commands work.
|
|
"""
|
|
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
|
|
|
|
class TestFrameVar(TestBase):
|
|
# If your test case doesn't stress debug info, then
|
|
# set this to true. That way it won't be run once for
|
|
# each debug info format.
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
|
|
def test_plugin_list_enable_disable_commands(self):
|
|
for plugin_namespace in [
|
|
"abi",
|
|
"architecture",
|
|
"disassembler",
|
|
"dynamic-loader",
|
|
"emulate-instruction",
|
|
"instrumentation-runtime",
|
|
"jit-loader",
|
|
"language",
|
|
"language-runtime",
|
|
"memory-history",
|
|
"object-container",
|
|
"object-file",
|
|
"operating-system",
|
|
"platform",
|
|
"process",
|
|
"repl",
|
|
"register-type-builder",
|
|
"script-interpreter",
|
|
"scripted-interface",
|
|
"structured-data",
|
|
"symbol-file",
|
|
"symbol-locator",
|
|
"symbol-vendor",
|
|
"system-runtime",
|
|
# 'trace', # No trace plugin is registered by default.
|
|
"trace-exporter",
|
|
"type-system",
|
|
"unwind-assembly",
|
|
]:
|
|
self.do_list_disable_enable_test(plugin_namespace)
|
|
|
|
def do_list_disable_enable_test(self, plugin_namespace):
|
|
# Plugins are enabled by default.
|
|
self.expect(
|
|
f"plugin list {plugin_namespace}", substrs=[plugin_namespace, "[+]"]
|
|
)
|
|
|
|
# Plugins can be disabled.
|
|
self.expect(
|
|
f"plugin disable {plugin_namespace}", substrs=[plugin_namespace, "[-]"]
|
|
)
|
|
|
|
# Plugins can be enabled.
|
|
self.expect(
|
|
f"plugin enable {plugin_namespace}", substrs=[plugin_namespace, "[+]"]
|
|
)
|
|
|
|
def test_completions(self):
|
|
# Make sure completions work for the plugin list, enable, and disable commands.
|
|
# We just check a few of the expected plugins to make sure the completion works.
|
|
self.completions_contain(
|
|
"plugin list ", ["abi", "architecture", "disassembler"]
|
|
)
|
|
self.completions_contain(
|
|
"plugin enable ", ["abi", "architecture", "disassembler"]
|
|
)
|
|
self.completions_contain(
|
|
"plugin disable ", ["abi", "architecture", "disassembler"]
|
|
)
|
|
|
|
# A completion for a partial namespace should be the full namespace.
|
|
# This allows the user to run the command on the full namespace.
|
|
self.completions_match("plugin list ab", ["abi"])
|
|
self.completions_contain(
|
|
"plugin list object", ["object-container", "object-file"]
|
|
)
|
|
|
|
# A completion for a full namespace should contain the plugins in that namespace.
|
|
self.completions_contain("plugin list object-file", ["object-file.JSON"])
|
|
self.completions_contain("plugin list object-file.", ["object-file.JSON"])
|
|
self.completions_contain("plugin list object-file.J", ["object-file.JSON"])
|
|
self.completions_contain("plugin list object-file.JS", ["object-file.JSON"])
|
|
|
|
# Check for a completion that is a both a complete namespace and a prefix of
|
|
# another namespace. It should return the completions for the plugins in the completed
|
|
# namespace as well as the completion for the partial namespace.
|
|
self.completions_contain(
|
|
"plugin list language", ["language.cplusplus", "language-runtime"]
|
|
)
|
|
|
|
# When the namespace is a prefix of another namespace and the user types a dot, the
|
|
# completion should not include the match for the partial namespace.
|
|
self.completions_contain(
|
|
"plugin list language.", ["language.cplusplus"], match=True
|
|
)
|
|
self.completions_contain(
|
|
"plugin list language.", ["language-runtime"], match=False
|
|
)
|
|
|
|
# Check for an empty completion list when the names is invalid.
|
|
# See docs for `complete_from_to` for how this checks for an empty list.
|
|
self.complete_from_to("plugin list abi.foo", ["plugin list abi.foo"])
|