MCPcopy
hub / github.com/crowdsecurity/crowdsec / TestGeneratePatternsDoc

Function TestGeneratePatternsDoc

pkg/parser/parsing_test.go:402–466  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

400func (p PairList) Less(i, j int) bool { return len(p[i].Value) < len(p[j].Value) }
401
402func 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 }

Callers

nothing calls this directly

Calls 2

NewUnixParserCtxFunction · 0.85
CloseMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…