(t *testing.T)
| 400 | func (p PairList) Less(i, j int) bool { return len(p[i].Value) < len(p[j].Value) } |
| 401 | |
| 402 | func TestGeneratePatternsDoc(t *testing.T) { |
| 403 | if os.Getenv("GO_WANT_TEST_DOC") != "1" { |
| 404 | return |
| 405 | } |
| 406 | |
| 407 | pctx, err := NewUnixParserCtx("../../config/patterns/", "./testdata/") |
| 408 | require.NoError(t, err, "unable to load patterns") |
| 409 | |
| 410 | log.Infof("-> %s", spew.Sdump(pctx)) |
| 411 | /*don't judge me, we do it for the users*/ |
| 412 | p := make(PairList, len(pctx.Grok.Patterns)) |
| 413 | |
| 414 | i := 0 |
| 415 | |
| 416 | for key, val := range pctx.Grok.Patterns { |
| 417 | p[i] = Pair{key, val} |
| 418 | p[i].Value = strings.ReplaceAll(p[i].Value, "{%{", "\\{\\%\\{") |
| 419 | i++ |
| 420 | } |
| 421 | |
| 422 | sort.Sort(p) |
| 423 | |
| 424 | f, err := os.OpenFile("./patterns-documentation.md", os.O_TRUNC|os.O_CREATE|os.O_WRONLY, 0o644) |
| 425 | if err != nil { |
| 426 | t.Fatalf("failed to open : %s", err) |
| 427 | } |
| 428 | |
| 429 | if _, err := f.WriteString("# Patterns documentation\n\n"); err != nil { |
| 430 | t.Fatal("failed to write to file") |
| 431 | } |
| 432 | |
| 433 | if _, err := f.WriteString("You will find here a generated documentation of all the patterns loaded by crowdsec.\n"); err != nil { |
| 434 | t.Fatal("failed to write to file") |
| 435 | } |
| 436 | |
| 437 | if _, err := f.WriteString("They are sorted by pattern length, and are meant to be used in parsers, in the form %{PATTERN_NAME}.\n"); err != nil { |
| 438 | t.Fatal("failed to write to file") |
| 439 | } |
| 440 | |
| 441 | if _, err := f.WriteString("\n\n"); err != nil { |
| 442 | t.Fatal("failed to write to file") |
| 443 | } |
| 444 | |
| 445 | for _, k := range p { |
| 446 | if _, err := fmt.Fprintf(f, "## %s\n\nPattern :\n```\n%s\n```\n\n", k.Key, k.Value); err != nil { |
| 447 | t.Fatal("failed to write to file") |
| 448 | } |
| 449 | |
| 450 | fmt.Printf("%v\t%v\n", k.Key, k.Value) |
| 451 | } |
| 452 | |
| 453 | if _, err := f.WriteString("\n"); err != nil { |
| 454 | t.Fatal("failed to write to file") |
| 455 | } |
| 456 | |
| 457 | if _, err := f.WriteString("# Documentation generation\n"); err != nil { |
| 458 | t.Fatal("failed to write to file") |
| 459 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…