hubtest_table.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "github.com/aquasecurity/table"
  6. "github.com/enescakir/emoji"
  7. "github.com/crowdsecurity/crowdsec/pkg/hubtest"
  8. )
  9. func hubTestResultTable(out io.Writer, testResult map[string]bool) {
  10. t := newLightTable(out)
  11. t.SetHeaders("Test", "Result")
  12. t.SetHeaderAlignment(table.AlignLeft)
  13. t.SetAlignment(table.AlignLeft)
  14. for testName, success := range testResult {
  15. status := emoji.CheckMarkButton.String()
  16. if !success {
  17. status = emoji.CrossMark.String()
  18. }
  19. t.AddRow(testName, status)
  20. }
  21. t.Render()
  22. }
  23. func hubTestListTable(out io.Writer, tests []*hubtest.HubTestItem) {
  24. t := newLightTable(out)
  25. t.SetHeaders("Name", "Path")
  26. t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft)
  27. t.SetAlignment(table.AlignLeft, table.AlignLeft)
  28. for _, test := range tests {
  29. t.AddRow(test.Name, test.Path)
  30. }
  31. t.Render()
  32. }
  33. func hubTestParserCoverageTable(out io.Writer, coverage []hubtest.ParserCoverage) {
  34. t := newLightTable(out)
  35. t.SetHeaders("Parser", "Status", "Number of tests")
  36. t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
  37. t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
  38. parserTested := 0
  39. for _, test := range coverage {
  40. status := emoji.RedCircle.String()
  41. if test.TestsCount > 0 {
  42. status = emoji.GreenCircle.String()
  43. parserTested++
  44. }
  45. t.AddRow(test.Parser, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
  46. }
  47. t.Render()
  48. }
  49. func hubTestScenarioCoverageTable(out io.Writer, coverage []hubtest.ScenarioCoverage) {
  50. t := newLightTable(out)
  51. t.SetHeaders("Scenario", "Status", "Number of tests")
  52. t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
  53. t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
  54. parserTested := 0
  55. for _, test := range coverage {
  56. status := emoji.RedCircle.String()
  57. if test.TestsCount > 0 {
  58. status = emoji.GreenCircle.String()
  59. parserTested++
  60. }
  61. t.AddRow(test.Scenario, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
  62. }
  63. t.Render()
  64. }