config: detect duplicate & internal job names at parse time (#908)

Before this PR, config parsing would accept duplicate job names. `zrepl
daemon` would later fail to start with a panic. But tools like `zrepl
configcheck` would pass.

This PR adds a check to ensure job names are unique.

Similarly, internal job names were not being rejected by config parsing
Move that check to parse-time as well.

Last, drive-by change: remove `internal/config/config_include_test.go`
introduced in #856 . These aren't necessary because there is already a
wildcard test for all valid configs.
This PR adds the complimentary "invalid config" wildcard test.
This commit is contained in:
Christian Schwarz
2026-01-19 09:38:43 +01:00
committed by GitHub
parent 4d6583ea5f
commit 860a9be37f
9 changed files with 108 additions and 54 deletions
@@ -0,0 +1,24 @@
jobs:
- type: snap
name: "my_job"
filesystems: {
"<": true,
}
snapshotting:
type: manual
pruning:
keep:
- type: last_n
count: 10
- type: snap
name: "my_job"
filesystems: {
"<": true,
}
snapshotting:
type: manual
pruning:
keep:
- type: last_n
count: 5
@@ -0,0 +1,12 @@
jobs:
- type: snap
name: "my_job"
filesystems: {
"<": true,
}
snapshotting:
type: manual
pruning:
keep:
- type: last_n
count: 5
@@ -0,0 +1,15 @@
jobs:
- type: snap
name: "my_job"
filesystems: {
"<": true,
}
snapshotting:
type: manual
pruning:
keep:
- type: last_n
count: 10
include:
- ./included.yml
@@ -0,0 +1,12 @@
jobs:
- type: snap
name: "_internal_job"
filesystems: {
"<": true,
}
snapshotting:
type: manual
pruning:
keep:
- type: last_n
count: 10