Skip to content

Commit fe3d89b

Browse files
committed
Adapt test coverage, more robust roll_minutes and roll_at parsing
1 parent 5d73a30 commit fe3d89b

File tree

2 files changed

+82
-21
lines changed

2 files changed

+82
-21
lines changed

caddytest/integration/caddyfile_adapt/log_roll_days.caddyfiletest

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,43 @@
11
:80
22

3-
log {
3+
log one {
44
output file /var/log/access.log {
5+
mode 0644
6+
dir_mode 0755
57
roll_size 1gb
68
roll_uncompressed
79
roll_local_time
810
roll_keep 5
911
roll_keep_for 90d
1012
}
1113
}
14+
log two {
15+
output file /var/log/access-2.log {
16+
mode 0777
17+
dir_mode from_file
18+
roll_size 1gib
19+
roll_interval 12h
20+
roll_at 00:00 06:00 12:00,18:00
21+
roll_minutes 10 40 45,46
22+
roll_keep 10
23+
roll_keep_for 90d
24+
}
25+
}
1226
----------
1327
{
1428
"logging": {
1529
"logs": {
1630
"default": {
1731
"exclude": [
18-
"http.log.access.log0"
32+
"http.log.access.one",
33+
"http.log.access.two"
1934
]
2035
},
21-
"log0": {
36+
"one": {
2237
"writer": {
38+
"dir_mode": "0755",
2339
"filename": "/var/log/access.log",
40+
"mode": "0644",
2441
"output": "file",
2542
"roll_gzip": false,
2643
"roll_keep": 5,
@@ -29,7 +46,34 @@ log {
2946
"roll_size_mb": 954
3047
},
3148
"include": [
32-
"http.log.access.log0"
49+
"http.log.access.one"
50+
]
51+
},
52+
"two": {
53+
"writer": {
54+
"dir_mode": "from_file",
55+
"filename": "/var/log/access-2.log",
56+
"mode": "0777",
57+
"output": "file",
58+
"roll_at": [
59+
"00:00",
60+
"06:00",
61+
"12:00",
62+
"18:00"
63+
],
64+
"roll_interval": 43200000000000,
65+
"roll_keep": 10,
66+
"roll_keep_days": 90,
67+
"roll_minutes": [
68+
10,
69+
40,
70+
45,
71+
46
72+
],
73+
"roll_size_mb": 1024
74+
},
75+
"include": [
76+
"http.log.access.two"
3377
]
3478
}
3579
}
@@ -42,7 +86,7 @@ log {
4286
":80"
4387
],
4488
"logs": {
45-
"default_logger_name": "log0"
89+
"default_logger_name": "two"
4690
}
4791
}
4892
}

modules/logging/filewriter.go

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -456,31 +456,48 @@ func (fw *FileWriter) UnmarshalCaddyfile(d *caddyfile.Dispenser) error {
456456
fw.RollInterval = duration
457457

458458
case "roll_minutes":
459-
var minutesArrayStr string
460-
if !d.AllArgs(&minutesArrayStr) {
459+
// Accept either a single comma-separated argument or
460+
// multiple space-separated arguments. Collect all
461+
// remaining args on the line and split on commas.
462+
args := d.RemainingArgs()
463+
if len(args) == 0 {
461464
return d.ArgErr()
462465
}
463-
minutesStr := strings.Split(minutesArrayStr, ",")
464-
minutes := make([]int, len(minutesStr))
465-
for i := range minutesStr {
466-
ms := strings.Trim(minutesStr[i], " ")
467-
m, err := strconv.Atoi(ms)
468-
if err != nil {
469-
return d.Errf("parsing roll_minutes number: %v", err)
466+
var minutes []int
467+
for _, arg := range args {
468+
parts := strings.SplitSeq(arg, ",")
469+
for p := range parts {
470+
ms := strings.TrimSpace(p)
471+
if ms == "" {
472+
return d.Errf("parsing roll_minutes: empty value")
473+
}
474+
m, err := strconv.Atoi(ms)
475+
if err != nil {
476+
return d.Errf("parsing roll_minutes number: %v", err)
477+
}
478+
minutes = append(minutes, m)
470479
}
471-
minutes[i] = m
472480
}
473481
fw.RollAtMinutes = minutes
474482

475483
case "roll_at":
476-
var timeArrayStr string
477-
if !d.AllArgs(&timeArrayStr) {
484+
// Accept either a single comma-separated argument or
485+
// multiple space-separated arguments. Collect all
486+
// remaining args on the line and split on commas.
487+
args := d.RemainingArgs()
488+
if len(args) == 0 {
478489
return d.ArgErr()
479490
}
480-
timeStr := strings.Split(timeArrayStr, ",")
481-
times := make([]string, len(timeStr))
482-
for i := range timeStr {
483-
times[i] = strings.Trim(timeStr[i], " ")
491+
var times []string
492+
for _, arg := range args {
493+
parts := strings.SplitSeq(arg, ",")
494+
for p := range parts {
495+
ts := strings.TrimSpace(p)
496+
if ts == "" {
497+
return d.Errf("parsing roll_at: empty value")
498+
}
499+
times = append(times, ts)
500+
}
484501
}
485502
fw.RollAt = times
486503

0 commit comments

Comments
 (0)