Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
207eec0fe3 | |||
b4c3193f01 | |||
eaf71fe65b |
@@ -6,6 +6,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.0.3] - 2025-07-23
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- handle errors via. required (tests)
|
||||||
|
- only error on non required values
|
||||||
|
|
||||||
## [0.0.2] - 2025-07-22
|
## [0.0.2] - 2025-07-22
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
@@ -94,7 +94,7 @@ OUTER:
|
|||||||
}
|
}
|
||||||
|
|
||||||
valueStr, err := defaultLogger.Load().Get(ctx, tag.Env)
|
valueStr, err := defaultLogger.Load().Get(ctx, tag.Env)
|
||||||
if err != nil {
|
if err != nil && tag.Required {
|
||||||
errs = append(errs, fmt.Errorf("field: %s failed to load: %w", field.Name, err))
|
errs = append(errs, fmt.Errorf("field: %s failed to load: %w", field.Name, err))
|
||||||
continue OUTER
|
continue OUTER
|
||||||
}
|
}
|
||||||
|
@@ -165,4 +165,36 @@ func TestLoad(t *testing.T) {
|
|||||||
assert.Equal(t, "some-item", val.SomeItem)
|
assert.Equal(t, "some-item", val.SomeItem)
|
||||||
assert.Equal(t, "some-other-item", val.SomeOtherItem)
|
assert.Equal(t, "some-other-item", val.SomeOtherItem)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("required true, error returned", func(t *testing.T) {
|
||||||
|
type Config struct {
|
||||||
|
SomeItem string
|
||||||
|
SomeOtherItem string `cfg:"required:true"`
|
||||||
|
someBool bool
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Setenv("SOME_OTHER_ITEM", "")
|
||||||
|
|
||||||
|
val, err := yourconfig.Load[Config]()
|
||||||
|
require.Error(t, err)
|
||||||
|
require.Zero(t, val)
|
||||||
|
|
||||||
|
assert.Equal(t, "config failed: field: SomeOtherItem (env=SOME_OTHER_ITEM) is not set and is required", err.Error())
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("required false, no error returned", func(t *testing.T) {
|
||||||
|
type Config struct {
|
||||||
|
SomeItem string
|
||||||
|
SomeOtherItem string `cfg:"required:false"`
|
||||||
|
someBool bool
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Setenv("SOME_OTHER_ITEM", "")
|
||||||
|
|
||||||
|
val, err := yourconfig.Load[Config]()
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
assert.Zero(t, val)
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user