Skip to content

Commit 634c806

Browse files
chore: return error when override fails
1 parent 3f2e93e commit 634c806

File tree

3 files changed

+31
-4
lines changed

3 files changed

+31
-4
lines changed

config/config.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ func ParseRawConfig(rawCfg *RawConfig) (*Config, error) {
589589
// apply overrides
590590
err := ApplyOverride(rawCfg, rawCfg.Override)
591591
if err != nil {
592-
log.Errorln("Error when applying overrides: %v", err)
592+
return nil, err
593593
}
594594

595595
general, err := parseGeneral(rawCfg)

config/override.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package config
22

33
import (
4+
"errors"
5+
"fmt"
46
"github.com/metacubex/mihomo/log"
57
"gopkg.in/yaml.v3"
68
"os"
@@ -55,7 +57,7 @@ func ApplyOverride(rawCfg *RawConfig, overrides []RawOverride) error {
5557
overrideContent, err := yaml.Marshal(override.Content)
5658
if err != nil {
5759
log.Errorln("Error when applying override #%v: %v", id, err)
58-
continue
60+
return err
5961
}
6062

6163
// unmarshal override content into rawConfig, with custom list merge strategy
@@ -69,11 +71,13 @@ func ApplyOverride(rawCfg *RawConfig, overrides []RawOverride) error {
6971
case Override, Default:
7072
err = yaml.Unmarshal(overrideContent, rawCfg)
7173
default:
72-
log.Errorln("Bad list strategy in override #%v: %v", id, override.ListStrategy)
74+
err = errors.New(fmt.Sprintf("Bad list strategy in override #%v: %v", id, override.ListStrategy))
75+
log.Errorln(err.Error())
76+
return err
7377
}
7478
if err != nil {
7579
log.Errorln("Error when applying override #%v: %v", id, err)
76-
continue
80+
return err
7781
}
7882
}
7983
return nil

config/override_test.go

+23
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"os"
99
"os/user"
1010
"runtime"
11+
"strings"
1112
"testing"
1213
)
1314

@@ -245,4 +246,26 @@ override:
245246
assert.Contains(t, cfg.Providers, "provider3")
246247
assert.Equal(t, "https://www.google.com", cfg.Providers["provider3"].HealthCheckURL())
247248
})
249+
250+
t.Run("bad_override", func(t *testing.T) {
251+
config_file := `
252+
mixed-port: 7890
253+
ipv6: true
254+
log-level: debug
255+
allow-lan: false
256+
unified-delay: false
257+
tcp-concurrent: true
258+
external-controller: 127.0.0.1:9090
259+
default-nameserver:
260+
- "223.5.5.5"
261+
override:
262+
- list-strategy: 12wlfiu3o
263+
content:
264+
external-controller: 0.0.0.0:9090
265+
allow-lan: true`
266+
rawCfg, err := UnmarshalRawConfig([]byte(config_file))
267+
assert.NoError(t, err)
268+
_, err = ParseRawConfig(rawCfg)
269+
assert.True(t, strings.HasPrefix(err.Error(), "Bad list strategy in override #0:"))
270+
})
248271
}

0 commit comments

Comments
 (0)