Skip to content

Commit d7c4f88

Browse files
committed
Fix coverage
1 parent d76c1dc commit d7c4f88

File tree

3 files changed

+73
-0
lines changed

3 files changed

+73
-0
lines changed

configurator_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package configuration
33
import (
44
"net"
55
"os"
6+
"reflect"
67
"testing"
78
"time"
89
)
@@ -257,3 +258,45 @@ func TestConfigurator_NoTags_Embedded_ptr(t *testing.T) {
257258
_, err := New[cfg](NewDefaultProvider())
258259
assert(t, "field [Name] with tags [] hasn't been set", err.Error())
259260
}
261+
262+
type _mockProvider struct{}
263+
264+
func (_mockProvider) Name() string {
265+
return "mock"
266+
}
267+
268+
func (_mockProvider) Tag() string {
269+
return DefaultProviderTag
270+
}
271+
272+
func (_mockProvider) Init(_ any) error {
273+
return nil
274+
}
275+
276+
func (dp _mockProvider) Provide(_ reflect.StructField, _ reflect.Value) error {
277+
return nil
278+
}
279+
280+
func TestConfigurator_Tags_collision(t *testing.T) {
281+
t.Parallel()
282+
283+
type cfg struct {
284+
Name string `default:"name"`
285+
}
286+
287+
_, err := New[cfg](NewDefaultProvider(), _mockProvider{})
288+
assert(t, ErrProviderTagCollision, err)
289+
}
290+
291+
func TestConfigurator_FailedToSetAll(t *testing.T) {
292+
t.Parallel()
293+
294+
type cfg struct {
295+
S struct {
296+
Name string `env:"NOPE_ENV_BAD" default:""`
297+
}
298+
}
299+
300+
_, err := FromEnvAndDefault[cfg]()
301+
assert(t, "field [Name] with tags [env:\"NOPE_ENV_BAD\" default:\"\"] hasn't been set", err.Error())
302+
}

envProvider_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,18 @@ func TestEnvProviderFailed(t *testing.T) {
4444
t.Fatal("must NOT be nil")
4545
}
4646
}
47+
48+
func TestEnvProvider_EmptyKey(t *testing.T) {
49+
type testStruct struct {
50+
Name string `env:""`
51+
}
52+
testObj := testStruct{}
53+
54+
fieldType := reflect.TypeOf(&testObj).Elem().Field(0)
55+
fieldVal := reflect.ValueOf(&testObj).Elem().Field(0)
56+
57+
provider := NewEnvProvider()
58+
59+
err := provider.Provide(fieldType, fieldVal)
60+
assert(t, "EnvProvider: key is empty", err.Error())
61+
}

jsonProvider_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,3 +112,18 @@ func TestFileProvider_Init(t *testing.T) {
112112
_, err = New[Cfg](NewJSONFileProvider("./testdata/malformed_input.json"))
113113
assert(t, "cannot init [JSONFileProvider] provider: JSONFileProvider.Init: invalid character '}' looking for beginning of value", err.Error())
114114
}
115+
116+
func TestJSONProvider_empty_tag(t *testing.T) {
117+
type testStruct struct {
118+
Test int `file_json:""`
119+
}
120+
121+
testObj := testStruct{}
122+
123+
fieldType := reflect.TypeOf(&testObj).Elem().Field(0)
124+
fieldVal := reflect.ValueOf(&testObj).Elem().Field(0)
125+
126+
provider := NewJSONFileProvider("./testdata/input.json")
127+
err := provider.Provide(fieldType, fieldVal)
128+
assert(t, "JSONFileProvider: key is empty", err.Error())
129+
}

0 commit comments

Comments
 (0)