// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 package crunchrun import ( check "gopkg.in/check.v1" ) var _ = check.Suite(&logScannerSuite{}) type logScannerSuite struct { } func (s *logScannerSuite) TestCallReportFuncOnce(c *check.C) { var reported []string ls := logScanner{ Patterns: []string{"foobar", "barbaz"}, ReportFunc: func(pattern, detail string) { reported = append(reported, pattern, detail) }, } ls.Write([]byte("foo\nbar\n2021-01-01T00:00:00.000Z: bar")) ls.Write([]byte("baz: it's a detail\nwaz\nqux")) ls.Write([]byte("\nfoobar\n")) c.Check(reported, check.DeepEquals, []string{"barbaz", "2021-01-01T00:00:00.000Z: barbaz: it's a detail"}) } func (s *logScannerSuite) TestOneWritePerLine(c *check.C) { var reported []string ls := logScanner{ Patterns: []string{"barbaz"}, ReportFunc: func(pattern, detail string) { reported = append(reported, pattern, detail) }, } ls.Write([]byte("foo\n")) ls.Write([]byte("2021-01-01T00:00:00.000Z: barbaz: it's a detail\n")) ls.Write([]byte("waz\n")) c.Check(reported, check.DeepEquals, []string{"barbaz", "2021-01-01T00:00:00.000Z: barbaz: it's a detail"}) } func (s *logScannerSuite) TestNoDetail(c *check.C) { var reported []string ls := logScanner{ Patterns: []string{"barbaz"}, ReportFunc: func(pattern, detail string) { reported = append(reported, pattern, detail) }, } ls.Write([]byte("foo\n")) ls.Write([]byte("barbaz\n")) ls.Write([]byte("waz\n")) c.Check(reported, check.DeepEquals, []string{"barbaz", "barbaz"}) }