@@ -23,85 +23,82 @@ func captureOutput(f func() error) (string, error) {
23
23
return string (out ), err
24
24
}
25
25
26
- func TestVersion (t * testing.T ) {
27
- in := & bytes.Buffer {}
26
+ func testStream () (genericiooptions.IOStreams , * bytes.Buffer ) {
28
27
out := & bytes.Buffer {}
29
- errOut := io .Discard
30
- rootCmd := NewMCPServerOptions (genericiooptions.IOStreams {In : in , Out : out , ErrOut : errOut })
31
- rootCmd .Version = true
32
- rootCmd .Run ()
33
- if out .String () != "0.0.0\n " {
34
- t .Fatalf ("Expected version 0.0.0, got %s" , out .String ())
28
+ return genericiooptions.IOStreams {
29
+ In : & bytes.Buffer {},
30
+ Out : out ,
31
+ ErrOut : io .Discard ,
32
+ }, out
33
+ }
34
+
35
+ func TestVersion (t * testing.T ) {
36
+ ioStreams , out := testStream ()
37
+ rootCmd := NewMCPServer (ioStreams )
38
+ rootCmd .SetArgs ([]string {"--version" })
39
+ if err := rootCmd .Execute (); out .String () != "0.0.0\n " {
40
+ t .Fatalf ("Expected version 0.0.0, got %s %v" , out .String (), err )
35
41
}
36
42
}
37
43
38
44
func TestProfile (t * testing.T ) {
45
+ t .Run ("available" , func (t * testing.T ) {
46
+ ioStreams , _ := testStream ()
47
+ rootCmd := NewMCPServer (ioStreams )
48
+ rootCmd .SetArgs ([]string {"--help" })
49
+ o , err := captureOutput (rootCmd .Execute ) // --help doesn't use logger/klog, cobra prints directly to stdout
50
+ if ! strings .Contains (o , "MCP profile to use (one of: full) " ) {
51
+ t .Fatalf ("Expected all available profiles, got %s %v" , o , err )
52
+ }
53
+ })
39
54
t .Run ("default" , func (t * testing.T ) {
40
- in := & bytes.Buffer {}
41
- out := & bytes.Buffer {}
42
- errOut := io .Discard
43
- rootCmd := NewMCPServerOptions (genericiooptions.IOStreams {In : in , Out : out , ErrOut : errOut })
44
- rootCmd .Version = true
45
- rootCmd .LogLevel = 1
46
- rootCmd .Complete ()
47
- rootCmd .Run ()
48
- if ! strings .Contains (out .String (), "- Profile: full" ) {
49
- t .Fatalf ("Expected profile 'full', got %s" , out )
55
+ ioStreams , out := testStream ()
56
+ rootCmd := NewMCPServer (ioStreams )
57
+ rootCmd .SetArgs ([]string {"--version" , "--log-level=1" })
58
+ if err := rootCmd .Execute (); ! strings .Contains (out .String (), "- Profile: full" ) {
59
+ t .Fatalf ("Expected profile 'full', got %s %v" , out , err )
50
60
}
51
61
})
52
62
}
53
63
54
64
func TestListOutput (t * testing.T ) {
55
65
t .Run ("available" , func (t * testing.T ) {
56
- in := & bytes.Buffer {}
57
- out := io .Discard
58
- errOut := io .Discard
59
- rootCmd := NewMCPServer (genericiooptions.IOStreams {In : in , Out : out , ErrOut : errOut })
66
+ ioStreams , _ := testStream ()
67
+ rootCmd := NewMCPServer (ioStreams )
60
68
rootCmd .SetArgs ([]string {"--help" })
61
- o , err := captureOutput (rootCmd .Execute )
69
+ o , err := captureOutput (rootCmd .Execute ) // --help doesn't use logger/klog, cobra prints directly to stdout
62
70
if ! strings .Contains (o , "Output format for resource list operations (one of: yaml, table)" ) {
63
- t .Fatalf ("Expected all available outputs, got %s %v" , out , err )
71
+ t .Fatalf ("Expected all available outputs, got %s %v" , o , err )
64
72
}
65
73
})
66
74
t .Run ("defaults to table" , func (t * testing.T ) {
67
- in := & bytes.Buffer {}
68
- out := & bytes.Buffer {}
69
- errOut := io .Discard
70
- rootCmd := NewMCPServerOptions (genericiooptions.IOStreams {In : in , Out : out , ErrOut : errOut })
71
- rootCmd .Version = true
72
- rootCmd .LogLevel = 1
73
- rootCmd .Complete ()
74
- rootCmd .Run ()
75
- if ! strings .Contains (out .String (), "- ListOutput: table" ) {
76
- t .Fatalf ("Expected list-output 'table', got %s" , out )
75
+ ioStreams , out := testStream ()
76
+ rootCmd := NewMCPServer (ioStreams )
77
+ rootCmd .SetArgs ([]string {"--version" , "--log-level=1" })
78
+ if err := rootCmd .Execute (); ! strings .Contains (out .String (), "- ListOutput: table" ) {
79
+ t .Fatalf ("Expected list-output 'table', got %s %v" , out , err )
77
80
}
78
81
})
79
82
}
80
83
81
- func TestDefaultReadOnly (t * testing.T ) {
82
- in := & bytes.Buffer {}
83
- out := & bytes.Buffer {}
84
- errOut := io .Discard
85
- rootCmd := NewMCPServerOptions (genericiooptions.IOStreams {In : in , Out : out , ErrOut : errOut })
86
- rootCmd .Version = true
87
- rootCmd .LogLevel = 1
88
- rootCmd .Complete ()
89
- rootCmd .Run ()
90
- if ! strings .Contains (out .String (), " - Read-only mode: false" ) {
91
- t .Fatalf ("Expected read-only mode false, got %s" , out )
92
- }
84
+ func TestReadOnly (t * testing.T ) {
85
+ t .Run ("defaults to false" , func (t * testing.T ) {
86
+ ioStreams , out := testStream ()
87
+ rootCmd := NewMCPServer (ioStreams )
88
+ rootCmd .SetArgs ([]string {"--version" , "--log-level=1" })
89
+ if err := rootCmd .Execute (); ! strings .Contains (out .String (), " - Read-only mode: false" ) {
90
+ t .Fatalf ("Expected read-only mode false, got %s %v" , out , err )
91
+ }
92
+ })
93
93
}
94
94
95
- func TestDefaultDisableDestructive (t * testing.T ) {
96
- in := & bytes.Buffer {}
97
- out := & bytes.Buffer {}
98
- errOut := io .Discard
99
- rootCmd := NewMCPServerOptions (genericiooptions.IOStreams {In : in , Out : out , ErrOut : errOut })
100
- rootCmd .Version = true
101
- rootCmd .LogLevel = 1
102
- rootCmd .Complete ()
103
- rootCmd .Run ()
104
- if ! strings .Contains (out .String (), " - Disable destructive tools: false" ) {
105
- t .Fatalf ("Expected disable destructive false, got %s" , out )
106
- }
95
+ func TestDisableDestructive (t * testing.T ) {
96
+ t .Run ("defaults to false" , func (t * testing.T ) {
97
+ ioStreams , out := testStream ()
98
+ rootCmd := NewMCPServer (ioStreams )
99
+ rootCmd .SetArgs ([]string {"--version" , "--log-level=1" })
100
+ if err := rootCmd .Execute (); ! strings .Contains (out .String (), " - Disable destructive tools: false" ) {
101
+ t .Fatalf ("Expected disable destructive false, got %s %v" , out , err )
102
+ }
103
+ })
107
104
}
0 commit comments