# This test validates the plugin list command.
# Currently it works only for system-runtime plugins and we only have one
# system runtime plugin so testing is a bit limited.
#
# Note that commands that return errors will stop running a script, so we
# have new RUN lines for any command that is expected to return an error.

# RUN: %lldb -s %s -o exit 2>&1 | FileCheck %s

# Test plugin list without an argument will list all plugins.
plugin list
# CHECK-LABEL: plugin list
# CHECK-DAG: instrumentation-runtime
# CHECK-DAG:  [+] AddressSanitizer               AddressSanitizer instrumentation runtime plugin.
# CHECK-DAG: system-runtime
# CHECK-DAG:  [+] systemruntime-macosx           System runtime plugin for Mac OS X native libraries

# Test plugin list works with fully qualified name.
plugin list system-runtime.systemruntime-macosx
# CHECK-LABEL: plugin list system-runtime.systemruntime-macosx
# CHECK: system-runtime
# CHECK:  [+] systemruntime-macosx           System runtime plugin for Mac OS X native libraries

# Test plugin list on plugin namespace works.
plugin list system-runtime
# CHECK-LABEL: plugin list system-runtime
# CHECK: system-runtime
# CHECK:  [+] systemruntime-macosx           System runtime plugin for Mac OS X native libraries

# Test plugin list on multiple args works.
plugin list system-runtime instrumentation-runtime.AddressSanitizer
# CHECK-LABEL: plugin list system-runtime instrumentation-runtime.AddressSanitizer
# CHECK: system-runtime
# CHECK:  [+] systemruntime-macosx           System runtime plugin for Mac OS X native libraries
# CHECK: instrumentation-runtime
# CHECK:  [+] AddressSanitizer               AddressSanitizer instrumentation runtime plugin.

# Test json output for plugin list.
plugin list --json
# CHECK-LABEL plugin list --json
# CHECK: {
# CHECK-DAG:  "instrumentation-runtime":
# CHECK-DAG:  "system-runtime":
# CHECK: }

# Test json output for plugin list with a namespace
plugin list system-runtime --json
# CHECK-LABEL plugin list --json
# CHECK: {
# CHECK:  "system-runtime": [
# CHECK:    {
# CHECK-DAG:  "enabled": true
# CHECK-DAG:  "name": "systemruntime-macosx"
# CHECK:    }
# CHECK:  ]
# CHECK: }

# Test json output for listing multiple plugins
plugin list --json system-runtime instrumentation-runtime.AddressSanitizer
# CHECK-LABEL plugin list --json system-runtime instrumentation-runtime.AddressSanitizer
# CHECK: {
# CHECK-DAG:  "instrumentation-runtime":
# CHECK-DAG:    "name": "AddressSanitizer"
# CHECK-DAG:  "system-runtime":
# CHECK: }


# Test plugin list does not match a plugin name by substring.
# RUN: %lldb -o "plugin list macosx" 2>&1 | FileCheck %s --check-prefix=ERROR_PLUGIN_NOT_FOUND

# Test plugin list does not match a plugin namespace by substring.
# RUN: %lldb -o "plugin list system-runtime." 2>&1 | FileCheck %s --check-prefix=ERROR_PLUGIN_NOT_FOUND

# Test plugin list returns an error for unknown second argument
# RUN: %lldb -o "plugin list system-runtime foo" 2>&1 | FileCheck %s --check-prefix=ERROR_PLUGIN_NOT_FOUND

# Test plugin list returns an error for unknown second argument
# RUN: %lldb -o "plugin list --json system-runtime foo" 2>&1 | FileCheck %s --check-prefix=ERROR_PLUGIN_NOT_FOUND

# Test plugin list for unknown plugin returns an error.
# RUN: %lldb -o "plugin list some-plugin-that-does-not-exist" 2>&1 | FileCheck %s --check-prefix=ERROR_PLUGIN_NOT_FOUND
# ERROR_PLUGIN_NOT_FOUND: error: Found no matching plugins
