Skip to content
This repository was archived by the owner on Feb 16, 2023. It is now read-only.

Commit 7d596bc

Browse files
committed
Add a test for using a Masker with multiple streams
1 parent d54d6ed commit 7d596bc

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

internals/cli/masker/masker_test.go

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"fmt"
66
"io"
7+
"strings"
78
"testing"
89
"time"
910

@@ -179,3 +180,57 @@ func TestMasker_WriteError(t *testing.T) {
179180
err = m.Stop()
180181
assert.Equal(t, err, expectedErr)
181182
}
183+
184+
func TestMasker_MultipleStreams(t *testing.T) {
185+
sequences := [][]byte{
186+
[]byte("Gandalf"),
187+
[]byte("uruk-hai army"),
188+
[]byte("Aragorn, son of Arathorn"),
189+
[]byte("hobbit"),
190+
}
191+
192+
input := [][]byte{
193+
[]byte("line 1 "),
194+
[]byte("line 2 "),
195+
[]byte("line 3 "),
196+
[]byte("message from Gandalf the Grey "),
197+
[]byte("line 5 "),
198+
[]byte("an uruk-hai army appears "),
199+
[]byte("say hobbit hobbit hobbit "),
200+
}
201+
202+
bufferDelay := 10 * time.Millisecond
203+
204+
m := New(sequences, &Options{
205+
BufferDelay: bufferDelay,
206+
})
207+
208+
var outputBuffer bytes.Buffer
209+
var streams [3]io.Writer
210+
211+
for i := range streams {
212+
streams[i] = m.AddStream(&outputBuffer)
213+
}
214+
215+
go m.Start()
216+
217+
expected := ""
218+
219+
for i, b := range input {
220+
n, err := streams[i%3].Write(b)
221+
assert.OK(t, err)
222+
assert.Equal(t, n, len(b))
223+
224+
expected += string(b)
225+
}
226+
227+
assert.Equal(t, outputBuffer.String(), "")
228+
229+
err := m.Stop()
230+
assert.OK(t, err)
231+
232+
for _, sequence := range sequences {
233+
expected = strings.ReplaceAll(expected, string(sequence), maskString)
234+
}
235+
assert.Equal(t, outputBuffer.String(), expected)
236+
}

0 commit comments

Comments
 (0)