1 package chainrpc
2 3 import (
4 "testing"
5 )
6 7 // TestHelp ensures the help is reasonably accurate by checking that every command specified also has result types
8 // defined and the one-line usage and help text can be generated for them.
9 func TestHelp(t *testing.T) {
10 // Ensure there are result types specified for every handler.
11 for k := range RPCHandlers {
12 if _, ok := ResultTypes[k]; !ok {
13 t.Errorf("RPC handler defined for method '%v' without "+
14 "also specifying result types", k,
15 )
16 continue
17 }
18 }
19 for k := range WSHandlers {
20 if _, ok := ResultTypes[k]; !ok {
21 t.Errorf("RPC handler defined for method '%v' without "+
22 "also specifying result types", k,
23 )
24 continue
25 }
26 }
27 // Ensure the usage for every command can be generated without errors.
28 helpCacher := NewHelpCacher()
29 var e error
30 if _, e = helpCacher.RPCUsage(true); E.Chk(e) {
31 t.Fatalf("Failed to generate one-line usage: %v", e)
32 }
33 if _, e = helpCacher.RPCUsage(true); E.Chk(e) {
34 t.Fatalf("Failed to generate one-line usage (cached): %v", e)
35 }
36 // Ensure the help for every command can be generated without errors.
37 for k := range RPCHandlers {
38 if _, e = helpCacher.RPCMethodHelp(k); E.Chk(e) {
39 t.Errorf("Failed to generate help for method '%v': %v",
40 k, e,
41 )
42 continue
43 }
44 if _, e = helpCacher.RPCMethodHelp(k); E.Chk(e) {
45 t.Errorf("Failed to generate help for method '%v'"+
46 "(cached): %v", k, e,
47 )
48 continue
49 }
50 }
51 for k := range WSHandlers {
52 if _, e = helpCacher.RPCMethodHelp(k); E.Chk(e) {
53 t.Errorf("Failed to generate help for method '%v': %v",
54 k, e,
55 )
56 continue
57 }
58 if _, e = helpCacher.RPCMethodHelp(k); E.Chk(e) {
59 t.Errorf("Failed to generate help for method '%v'"+
60 "(cached): %v", k, e,
61 )
62 continue
63 }
64 }
65 }
66