MCPcopy Index your code
hub / github.com/coder/coder / ReadLine

Method ReadLine

testutil/expecter/expecter.go:253–300  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

251}
252
253func (e *Expecter) ReadLine(ctx context.Context) string {
254 e.t.Helper()
255
256 var buffer bytes.Buffer
257 err := e.doMatchWithDeadline(ctx, "ReadLine", func(rd *bufio.Reader) error {
258 for {
259 r, _, err := rd.ReadRune()
260 if err != nil {
261 return err
262 }
263 if r == '\n' {
264 return nil
265 }
266 if r == '\r' {
267 // Peek the next rune to see if it's an LF and then consume
268 // it.
269
270 // Unicode code points can be up to 4 bytes, but the
271 // ones we're looking for are only 1 byte.
272 b, _ := rd.Peek(1)
273 if len(b) == 0 {
274 return nil
275 }
276
277 r, _ = utf8.DecodeRune(b)
278 if r == '\n' {
279 _, _, err = rd.ReadRune()
280 if err != nil {
281 return err
282 }
283 }
284
285 return nil
286 }
287
288 _, err = buffer.WriteRune(r)
289 if err != nil {
290 return err
291 }
292 }
293 })
294 if err != nil {
295 e.fatalf("read error", "%v (wanted newline; got %q)", err, buffer.String())
296 return ""
297 }
298 e.Logf("matched newline = %q", buffer.String())
299 return buffer.String()
300}
301
302func (e *Expecter) ReadAll() []byte {
303 e.t.Helper()

Callers

nothing calls this directly

Calls 7

doMatchWithDeadlineMethod · 0.95
fatalfMethod · 0.95
LogfMethod · 0.95
HelperMethod · 0.65
ReadRuneMethod · 0.45
PeekMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected