diff options
Diffstat (limited to 'internal/regex')
| -rw-r--r-- | internal/regex/regex.go | 20 | ||||
| -rw-r--r-- | internal/regex/regex_test.go | 33 |
2 files changed, 27 insertions, 26 deletions
diff --git a/internal/regex/regex.go b/internal/regex/regex.go index 2561659..eb6e1b3 100644 --- a/internal/regex/regex.go +++ b/internal/regex/regex.go @@ -4,8 +4,6 @@ import ( "fmt" "regexp" "strings" - - "github.com/mimecast/dtail/internal/io/logger" ) // Regex for filtering lines. @@ -50,9 +48,7 @@ func new(regexStr string, flags []Flag) (Regex, error) { regexStr: regexStr, flags: flags, } - re, err := regexp.Compile(regexStr) - if err != nil { return r, err } @@ -91,17 +87,15 @@ func (r Regex) MatchString(str string) bool { } // Serialize the regex. -func (r Regex) Serialize() string { +func (r Regex) Serialize() (string, error) { var flags []string for _, flag := range r.flags { flags = append(flags, flag.String()) } - if !r.initialized { - logger.FatalExit("Unable to serialize regex as not initialized properly", r) + return "", fmt.Errorf("Unable to serialize regex as not initialized properly: %v", r) } - - return fmt.Sprintf("regex:%s %s", strings.Join(flags, ","), r.regexStr) + return fmt.Sprintf("regex:%s %s", strings.Join(flags, ","), r.regexStr), nil } // Deserialize the regex. @@ -109,15 +103,14 @@ func Deserialize(str string) (Regex, error) { // Get regex string s := strings.SplitN(str, " ", 2) if len(s) < 2 { - logger.Debug("Using noop regex", str) return NewNoop(), nil } - flagsStr := s[0] regexStr := s[1] if !strings.HasPrefix(flagsStr, "regex") { - return Regex{}, fmt.Errorf("unable to deserialize regex '%s': should start with string 'regex'", str) + return Regex{}, fmt.Errorf("unable to deserialize regex '%s': should start "+ + "with string 'regex'", str) } // Parse regex flags, e.g. "regex:flag1,flag2,flag3..." @@ -127,13 +120,10 @@ func Deserialize(str string) (Regex, error) { for _, flagStr := range strings.Split(s[1], ",") { flag, err := NewFlag(flagStr) if err != nil { - logger.Error("ignoring flag", err) continue } - logger.Debug("Adding regex flag", flag) flags = append(flags, flag) } } - return new(regexStr, flags) } diff --git a/internal/regex/regex_test.go b/internal/regex/regex_test.go index a5e7faf..033a286 100644 --- a/internal/regex/regex_test.go +++ b/internal/regex/regex_test.go @@ -9,7 +9,8 @@ func TestRegex(t *testing.T) { r := NewNoop() if !r.MatchString(input) { - t.Errorf("expected to match string '%s' with noop regex '%v' but didn't\n", input, r) + t.Errorf("expected to match string '%s' with noop regex '%v' but didn't\n", + input, r) } r, err := New(".hello", Default) @@ -17,16 +18,21 @@ func TestRegex(t *testing.T) { t.Errorf("unable to create regex: %v\n", err) } if r.MatchString(input) { - t.Errorf("expected to match string '%s' with regex '%v' but didn't\n", input, r) + t.Errorf("expected to match string '%s' with regex '%v' but didn't\n", + input, r) } - r2, err := Deserialize(r.Serialize()) + serialized, err := r.Serialize() if err != nil { - t.Errorf("unable to serialize deserialized regex: %v: %v\n", r.Serialize(), err) + t.Errorf("unable to serialize regex: %v: %v\n", serialized, err) + } + r2, err := Deserialize(serialized) + if err != nil { + t.Errorf("unable to serialize deserialized regex: %v: %v\n", serialized, err) } if r.String() != r2.String() { - t.Errorf("regex should be the same after deserialize(serialize(..)), got '%s' but expected '%s'.\n", - r2.String(), r.String()) + t.Errorf("regex should be the same after deserialize(serialize(..)), got "+ + "'%s' but expected '%s'.\n", r2.String(), r.String()) } r, err = New(".hello", Invert) @@ -34,15 +40,20 @@ func TestRegex(t *testing.T) { t.Errorf("unable to create regex: %v\n", err) } if !r.MatchString(input) { - t.Errorf("expected to not match string '%s' with regex '%v' but matched\n", input, r) + t.Errorf("expected to not match string '%s' with regex '%v' but matched\n", + input, r) } - r2, err = Deserialize(r.Serialize()) + serialized, err = r.Serialize() + if err != nil { + t.Errorf("unable to serialize regex: %v: %v\n", serialized, err) + } + r2, err = Deserialize(serialized) if err != nil { - t.Errorf("unable to serialize deserialized regex: %v: %v\n", r.Serialize(), err) + t.Errorf("unable to serialize deserialized regex: %v: %v\n", serialized, err) } if r.String() != r2.String() { - t.Errorf("regex should be the same after deserialize(serialize(..)), got '%s' but expected '%s'.\n", - r2.String(), r.String()) + t.Errorf("regex should be the same after deserialize(serialize(..)), got "+ + "'%s' but expected '%s'.\n", r2.String(), r.String()) } } |
