mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-26 13:43:47 +03:00
logging: fix file mode configuration parsing (#6383)
Commit 101d3e7
introduced file mode setting,
but was missing a JSON Marshaller so that
CaddyFile can be converted to JSON safely.
This commit is contained in:
parent
9be4f194e0
commit
0bc27e5fb1
2 changed files with 44 additions and 0 deletions
|
@ -59,6 +59,11 @@ func (m *fileMode) UnmarshalJSON(b []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MarshalJSON satisfies json.Marshaler.
|
||||||
|
func (m *fileMode) MarshalJSON() ([]byte, error) {
|
||||||
|
return []byte(fmt.Sprintf("\"%04o\"", *m)), nil
|
||||||
|
}
|
||||||
|
|
||||||
// parseFileMode parses a file mode string,
|
// parseFileMode parses a file mode string,
|
||||||
// adding support for `chmod` unix command like
|
// adding support for `chmod` unix command like
|
||||||
// 1 to 4 digital octal values.
|
// 1 to 4 digital octal values.
|
||||||
|
|
|
@ -306,3 +306,42 @@ func TestFileModeJSON(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFileModeToJSON(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
mode fileMode
|
||||||
|
want string
|
||||||
|
wantErr bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "none zero",
|
||||||
|
mode: 0644,
|
||||||
|
want: `"0644"`,
|
||||||
|
wantErr: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "zero mode",
|
||||||
|
mode: 0,
|
||||||
|
want: `"0000"`,
|
||||||
|
wantErr: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
var b []byte
|
||||||
|
var err error
|
||||||
|
|
||||||
|
if b, err = json.Marshal(&tt.mode); (err != nil) != tt.wantErr {
|
||||||
|
t.Fatalf("MarshalJSON() error = %v, want %v", err, tt.wantErr)
|
||||||
|
}
|
||||||
|
|
||||||
|
got := string(b[:])
|
||||||
|
|
||||||
|
if got != tt.want {
|
||||||
|
t.Errorf("got mode %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue