mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 08:38:27 -05:00
7f4cca11dc
If summary or since is empty, we used to return NULL in COMMAND DOCS. Currently all redis commands will have these two fields. But not for module command, summary and since are optional for RM_SetCommandInfo. With the change in #10043, if a module command doesn't have the summary or since, redis-cli will crash (see #10250). In this commit, COMMAND DOCS avoid adding summary or since when they are missing.
54 lines
2.5 KiB
Tcl
54 lines
2.5 KiB
Tcl
set testmodule [file normalize tests/modules/subcommands.so]
|
|
|
|
start_server {tags {"modules"}} {
|
|
r module load $testmodule
|
|
|
|
test "Module subcommands via COMMAND" {
|
|
# Verify that module subcommands are displayed correctly in COMMAND
|
|
set command_reply [r command info subcommands.bitarray]
|
|
set first_cmd [lindex $command_reply 0]
|
|
set subcmds_in_command [lsort [lindex $first_cmd 9]]
|
|
assert_equal [lindex $subcmds_in_command 0] {subcommands.bitarray|get -2 module 1 1 1 {} {} {{flags {RO access} begin_search {type index spec {index 1}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}} {}}
|
|
assert_equal [lindex $subcmds_in_command 1] {subcommands.bitarray|set -2 module 1 1 1 {} {} {{flags {RW update} begin_search {type index spec {index 1}} find_keys {type range spec {lastkey 0 keystep 1 limit 0}}}} {}}
|
|
|
|
# Verify that module subcommands are displayed correctly in COMMAND DOCS
|
|
set docs_reply [r command docs subcommands.bitarray]
|
|
set docs [dict create {*}[lindex $docs_reply 1]]
|
|
set subcmds_in_cmd_docs [dict create {*}[dict get $docs subcommands]]
|
|
assert_equal [dict get $subcmds_in_cmd_docs "subcommands.bitarray|get"] {group module}
|
|
assert_equal [dict get $subcmds_in_cmd_docs "subcommands.bitarray|set"] {group module}
|
|
}
|
|
|
|
test "Module pure-container command fails on arity error" {
|
|
catch {r subcommands.bitarray} e
|
|
assert_match {*wrong number of arguments for 'subcommands.bitarray' command} $e
|
|
|
|
# Subcommands can be called
|
|
assert_equal [r subcommands.bitarray get k1] {OK}
|
|
}
|
|
|
|
test "Module get current command fullname" {
|
|
assert_equal [r subcommands.parent_get_fullname] {subcommands.parent_get_fullname}
|
|
}
|
|
|
|
test "Module get current subcommand fullname" {
|
|
assert_equal [r subcommands.sub get_fullname] {subcommands.sub|get_fullname}
|
|
}
|
|
|
|
test "COMMAND LIST FILTERBY MODULE" {
|
|
assert_equal {} [r command list filterby module non_existing]
|
|
|
|
set commands [r command list filterby module subcommands]
|
|
assert_not_equal [lsearch $commands "subcommands.bitarray"] -1
|
|
assert_not_equal [lsearch $commands "subcommands.bitarray|set"] -1
|
|
assert_not_equal [lsearch $commands "subcommands.parent_get_fullname"] -1
|
|
assert_not_equal [lsearch $commands "subcommands.sub|get_fullname"] -1
|
|
|
|
assert_equal [lsearch $commands "set"] -1
|
|
}
|
|
|
|
test "Unload the module - subcommands" {
|
|
assert_equal {OK} [r module unload subcommands]
|
|
}
|
|
}
|