@@ -8,6 +8,7 @@ package validate
88
99import (
1010 "bytes"
11+ "errors"
1112 "os"
1213 "path/filepath"
1314 "testing"
@@ -38,6 +39,16 @@ func TestValidateMissingID(t *testing.T) {
3839 require .EqualError (t , err , "missing fsc.id in configuration" )
3940}
4041
42+ func TestValidateMissingConfig (t * testing.T ) {
43+ t .Parallel ()
44+
45+ dir := t .TempDir ()
46+
47+ _ , err := Validate (dir )
48+ require .Error (t , err )
49+ require .Contains (t , err .Error (), "core.yaml" )
50+ }
51+
4152func TestCmd (t * testing.T ) {
4253 t .Parallel ()
4354
@@ -55,3 +66,51 @@ func TestCmd(t *testing.T) {
5566 require .NoError (t , err )
5667 require .Contains (t , out .String (), filepath .Join (dir , "core.yaml" ))
5768}
69+
70+ func TestCmdTrailingArgs (t * testing.T ) {
71+ t .Parallel ()
72+
73+ cmd := Cmd ()
74+ cmd .SetArgs ([]string {"unexpected" })
75+
76+ err := cmd .Execute ()
77+ require .EqualError (t , err , "trailing args detected" )
78+ require .False (t , cmd .SilenceUsage )
79+ }
80+
81+ func TestCmdValidateError (t * testing.T ) {
82+ t .Parallel ()
83+
84+ cmd := Cmd ()
85+ var out bytes.Buffer
86+ cmd .SetOut (& out )
87+ cmd .SetErr (& out )
88+ cmd .SetArgs ([]string {"--config-path" , t .TempDir ()})
89+
90+ err := cmd .Execute ()
91+ require .Error (t , err )
92+ require .Contains (t , err .Error (), "core.yaml" )
93+ require .True (t , cmd .SilenceUsage )
94+ }
95+
96+ func TestCmdWriteError (t * testing.T ) {
97+ t .Parallel ()
98+
99+ dir := t .TempDir ()
100+ err := os .WriteFile (filepath .Join (dir , "core.yaml" ), []byte ("fsc:\n id: node1\n " ), 0o600 )
101+ require .NoError (t , err )
102+
103+ cmd := Cmd ()
104+ cmd .SetOut (failingWriter {})
105+ cmd .SetErr (bytes .NewBuffer (nil ))
106+ cmd .SetArgs ([]string {"--config-path" , dir })
107+
108+ err = cmd .Execute ()
109+ require .EqualError (t , err , "write failed" )
110+ }
111+
112+ type failingWriter struct {}
113+
114+ func (failingWriter ) Write (p []byte ) (int , error ) {
115+ return 0 , errors .New ("write failed" )
116+ }
0 commit comments