Resurrect rpchelp_test.go
This file was accidentally removed when the gRPC server was introduced and the legacy JSON-RPC server was moved to the legacyrpc package.
This commit is contained in:
parent
4ee9ce59fb
commit
3d7b8c6f40
1 changed files with 109 additions and 0 deletions
109
rpc/legacyrpc/rpchelp_test.go
Normal file
109
rpc/legacyrpc/rpchelp_test.go
Normal file
|
@ -0,0 +1,109 @@
|
|||
// Copyright (c) 2015-2016 The btcsuite developers
|
||||
//
|
||||
// Permission to use, copy, modify, and distribute this software for any
|
||||
// purpose with or without fee is hereby granted, provided that the above
|
||||
// copyright notice and this permission notice appear in all copies.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
package legacyrpc
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/btcsuite/btcd/btcjson"
|
||||
"github.com/btcsuite/btcwallet/internal/rpchelp"
|
||||
)
|
||||
|
||||
func serverMethods() map[string]struct{} {
|
||||
m := make(map[string]struct{})
|
||||
for method, handlerData := range rpcHandlers {
|
||||
if !handlerData.noHelp {
|
||||
m[method] = struct{}{}
|
||||
}
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
// TestRPCMethodHelpGeneration ensures that help text can be generated for every
|
||||
// method of the RPC server for every supported locale.
|
||||
func TestRPCMethodHelpGeneration(t *testing.T) {
|
||||
needsGenerate := false
|
||||
|
||||
defer func() {
|
||||
if needsGenerate && !t.Failed() {
|
||||
t.Error("Generated help texts are out of date: run 'go generate'")
|
||||
return
|
||||
}
|
||||
if t.Failed() {
|
||||
t.Log("Regenerate help texts with 'go generate' after fixing")
|
||||
}
|
||||
}()
|
||||
|
||||
for i := range rpchelp.HelpDescs {
|
||||
svrMethods := serverMethods()
|
||||
locale := rpchelp.HelpDescs[i].Locale
|
||||
generatedDescs := localeHelpDescs[locale]()
|
||||
for _, m := range rpchelp.Methods {
|
||||
delete(svrMethods, m.Method)
|
||||
|
||||
helpText, err := btcjson.GenerateHelp(m.Method, rpchelp.HelpDescs[i].Descs, m.ResultTypes...)
|
||||
if err != nil {
|
||||
t.Errorf("Cannot generate '%s' help for method '%s': missing description for '%s'",
|
||||
locale, m.Method, err)
|
||||
continue
|
||||
}
|
||||
if !needsGenerate && helpText != generatedDescs[m.Method] {
|
||||
needsGenerate = true
|
||||
}
|
||||
}
|
||||
|
||||
for m := range svrMethods {
|
||||
t.Errorf("Missing '%s' help for method '%s'", locale, m)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestRPCMethodUsageGeneration ensures that single line usage text can be
|
||||
// generated for every supported request of the RPC server.
|
||||
func TestRPCMethodUsageGeneration(t *testing.T) {
|
||||
needsGenerate := false
|
||||
|
||||
defer func() {
|
||||
if needsGenerate && !t.Failed() {
|
||||
t.Error("Generated help usages are out of date: run 'go generate'")
|
||||
return
|
||||
}
|
||||
if t.Failed() {
|
||||
t.Log("Regenerate help usage with 'go generate' after fixing")
|
||||
}
|
||||
}()
|
||||
|
||||
svrMethods := serverMethods()
|
||||
usageStrs := make([]string, 0, len(rpchelp.Methods))
|
||||
for _, m := range rpchelp.Methods {
|
||||
delete(svrMethods, m.Method)
|
||||
|
||||
usage, err := btcjson.MethodUsageText(m.Method)
|
||||
if err != nil {
|
||||
t.Errorf("Cannot generate single line usage for method '%s': %v",
|
||||
m.Method, err)
|
||||
}
|
||||
|
||||
if !t.Failed() {
|
||||
usageStrs = append(usageStrs, usage)
|
||||
}
|
||||
}
|
||||
|
||||
if !t.Failed() {
|
||||
usages := strings.Join(usageStrs, "\n")
|
||||
needsGenerate = usages != requestUsages
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue