Skip to content

Commit 5beceef

Browse files
committed
merge prerelease branch
1 parent a78023a commit 5beceef

File tree

7 files changed

+343
-72
lines changed

7 files changed

+343
-72
lines changed

ldcontext/builder_multi.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ func NewMultiBuilder() *MultiBuilder {
5353
// than a multi-kind context.
5454
func (m *MultiBuilder) Build() Context {
5555
if len(m.contexts) == 0 {
56-
return Context{err: errContextKindMultiWithNoKinds}
56+
return Context{defined: true, err: errContextKindMultiWithNoKinds}
5757
}
5858

5959
if len(m.contexts) == 1 {
6060
// Never return a multi-kind context with just one kind; instead return the individual one
6161
c := m.contexts[0]
6262
if c.Multiple() {
63-
return Context{err: errContextKindMultiWithinMulti}
63+
return Context{defined: true, err: errContextKindMultiWithinMulti}
6464
}
6565
return c
6666
}
@@ -99,7 +99,8 @@ func (m *MultiBuilder) Build() Context {
9999
}
100100
if len(errs) != 0 {
101101
return Context{
102-
err: errors.New(strings.Join(errs, ", ")),
102+
defined: true,
103+
err: errors.New(strings.Join(errs, ", ")),
103104
}
104105
}
105106

ldcontext/builder_multi_test.go

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,15 @@ func TestMultiBuilder(t *testing.T) {
1818
sub2 := NewWithKind("user", "my-user-key")
1919
c0 := NewMultiBuilder().Add(sub1).Add(sub2).Build()
2020

21+
assert.True(t, c0.IsDefined())
2122
assert.NoError(t, c0.Err())
2223
assert.Equal(t, Kind("multi"), c0.Kind())
2324
assert.Equal(t, "", c0.Key())
2425

25-
assert.Equal(t, 2, c0.MultiKindCount())
26+
assert.Equal(t, 2, c0.IndividualContextCount())
2627

27-
c1a, ok := c0.MultiKindByIndex(0)
28-
assert.True(t, ok)
29-
assert.Equal(t, sub1, c1a)
30-
31-
c1b, ok := c0.MultiKindByName("org")
32-
assert.True(t, ok)
33-
assert.Equal(t, sub1, c1b)
34-
35-
c2a, ok := c0.MultiKindByIndex(1)
36-
assert.True(t, ok)
37-
assert.Equal(t, sub2, c2a)
38-
39-
c2b, ok := c0.MultiKindByName("user")
40-
assert.True(t, ok)
41-
assert.Equal(t, sub2, c2b)
42-
43-
_, ok = c0.MultiKindByIndex(-1)
44-
assert.False(t, ok)
45-
46-
_, ok = c0.MultiKindByIndex(2)
47-
assert.False(t, ok)
48-
49-
_, ok = c0.MultiKindByName("notfound")
50-
assert.False(t, ok)
28+
assert.Equal(t, []Context{sub1, sub2}, c0.GetAllIndividualContexts(nil))
29+
// other accessors are tested in context_test.go
5130
})
5231
}
5332

@@ -68,9 +47,11 @@ func TestMultiBuilderFullyQualifiedKey(t *testing.T) {
6847
func TestMultiBuilderErrors(t *testing.T) {
6948
verifyError := func(t *testing.T, builder *MultiBuilder, expectedErr error) {
7049
c0 := builder.Build()
50+
assert.True(t, c0.IsDefined())
7151
assert.Equal(t, expectedErr, c0.Err())
7252

7353
c1, err := builder.TryBuild()
54+
assert.True(t, c1.IsDefined())
7455
assert.Equal(t, expectedErr, c1.Err())
7556
assert.Equal(t, expectedErr, err)
7657
}
@@ -119,12 +100,12 @@ func TestMultiBuilderCopyOnWrite(t *testing.T) {
119100
b.Add(c1).Add(c2)
120101

121102
multi1 := b.Build()
122-
assert.Equal(t, 2, multi1.MultiKindCount())
103+
assert.Equal(t, 2, multi1.IndividualContextCount())
123104

124105
c3 := NewWithKind("thing", "stuff")
125106
b.Add(c3)
126107

127108
multi2 := b.Build()
128-
assert.Equal(t, 3, multi2.MultiKindCount())
129-
assert.Equal(t, 2, multi1.MultiKindCount()) // unchanged
109+
assert.Equal(t, 3, multi2.IndividualContextCount())
110+
assert.Equal(t, 2, multi1.IndividualContextCount()) // unchanged
130111
}

ldcontext/builder_simple.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@ func (b *Builder) Build() Context {
9696
}
9797
actualKind, err := validateSingleKind(b.kind)
9898
if err != nil {
99-
return Context{err: err, kind: b.kind}
99+
return Context{defined: true, err: err, kind: b.kind}
100100
}
101101
if b.key == "" && !b.allowEmptyKey {
102-
return Context{err: errContextKeyEmpty, kind: b.kind}
102+
return Context{defined: true, err: errContextKeyEmpty, kind: b.kind}
103103
}
104104
// We set the kind in the error cases above because that improves error reporting if this
105105
// context is used within a multi-kind context.

ldcontext/builder_simple_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ func makeBasicBuilder() *Builder {
3535

3636
func TestBuilderDefaultProperties(t *testing.T) {
3737
c := NewBuilder("my-key").Build()
38+
assert.True(t, c.IsDefined())
3839
assert.NoError(t, c.Err())
3940
assert.Equal(t, DefaultKind, c.Kind())
4041
assert.Equal(t, "my-key", c.Key())
@@ -51,9 +52,11 @@ func TestBuilderKindValidation(t *testing.T) {
5152
b := NewBuilder("my-key").Kind(Kind(p.kind))
5253

5354
c0 := b.Build()
55+
assert.True(t, c0.IsDefined())
5456
assert.Equal(t, p.err, c0.Err())
5557

5658
c1, err := b.TryBuild()
59+
assert.True(t, c1.IsDefined())
5760
assert.Equal(t, p.err, c1.Err())
5861
assert.Equal(t, p.err, err)
5962
})
@@ -64,9 +67,11 @@ func TestBuilderKeyValidation(t *testing.T) {
6467
b := NewBuilder("")
6568

6669
c0 := b.Build()
70+
assert.True(t, c0.IsDefined())
6771
assert.Equal(t, errContextKeyEmpty, c0.Err())
6872

6973
c1, err := b.TryBuild()
74+
assert.True(t, c1.IsDefined())
7075
assert.Equal(t, errContextKeyEmpty, c1.Err())
7176
assert.Equal(t, errContextKeyEmpty, err)
7277
}

0 commit comments

Comments
 (0)