Skip to content

Commit

Permalink
Merge 1e86099 into d56d5f3
Browse files Browse the repository at this point in the history
  • Loading branch information
logrusorgru committed Jan 31, 2016
2 parents d56d5f3 + 1e86099 commit 2a6d034
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
5 changes: 5 additions & 0 deletions grok.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ func (g *Grok) AddPatternsFromMap(m map[string]string) error {
for k, v := range m {
keys := []string{}
for _, key := range re.FindAllStringSubmatch(v, -1) {
if g.patterns[key[1]] == nil {
if m[key[1]] == "" {
return fmt.Errorf("no pattern found for %%{%s}", key[1])
}
}
keys = append(keys, key[1])
}
patternDeps[k] = keys
Expand Down
65 changes: 65 additions & 0 deletions grok_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -537,3 +537,68 @@ func TestParseTypedWithSemanticHomonyms(t *testing.T) {
}
}
}

func TestGrok_AddPatternsFromMap_not_exist(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Fatalf("AddPatternsFromMap panics: %v", r)
}
}()
g := New()
err := g.AddPatternsFromMap(map[string]string{
"SOME": "%{NOT_EXIST}",
})
if err == nil {
t.Errorf("AddPatternsFromMap should returns an error")
}
}

func TestGrok_AddPatternsFromMap_simple(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Fatalf("AddPatternsFromMap panics: %v", r)
}
}()
g := New()
err := g.AddPatternsFromMap(map[string]string{
"NO3": `\d{3}`,
})
if err != nil {
t.Errorf("AddPatternsFromMap returns an error: %v", err)
}
mss, err := g.Parse("%{NO3:match}", "333")
if err != nil {
t.Error("parsing error:", err)
t.FailNow()
}
if mss["match"] != "333" {
t.Errorf("bad match: expected 333, got %s", mss["match"])
}
}

func TestGrok_AddPatternsFromMap_complex(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Fatalf("AddPatternsFromMap panics: %v", r)
}
}()
g := NewWithConfig(&Config{
SkipDefaultPatterns: true,
NamedCapturesOnly: true,
})
err := g.AddPatternsFromMap(map[string]string{
"NO3": `\d{3}`,
"NO6": "%{NO3}%{NO3}",
})
if err != nil {
t.Errorf("AddPatternsFromMap returns an error: %v", err)
}
mss, err := g.Parse("%{NO6:number}", "333666")
if err != nil {
t.Error("parsing error:", err)
t.FailNow()
}
if mss["number"] != "333666" {
t.Errorf("bad match: expected 333666, got %s", mss["match"])
}
}

0 comments on commit 2a6d034

Please sign in to comment.