Skip to content

Commit ecc332f

Browse files
committed
testing: cover validate command error paths
1 parent c40c77f commit ecc332f

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

node/validate/validate_test.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package validate
88

99
import (
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+
4152
func 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

Comments
 (0)