hubtest_table.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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.Coverage) {
  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.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
  46. }
  47. t.Render()
  48. }
  49. func hubTestAppsecRuleCoverageTable(out io.Writer, coverage []hubtest.Coverage) {
  50. t := newLightTable(out)
  51. t.SetHeaders("Appsec Rule", "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.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
  62. }
  63. t.Render()
  64. }
  65. func hubTestScenarioCoverageTable(out io.Writer, coverage []hubtest.Coverage) {
  66. t := newLightTable(out)
  67. t.SetHeaders("Scenario", "Status", "Number of tests")
  68. t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
  69. t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
  70. parserTested := 0
  71. for _, test := range coverage {
  72. status := emoji.RedCircle.String()
  73. if test.TestsCount > 0 {
  74. status = emoji.GreenCircle.String()
  75. parserTested++
  76. }
  77. t.AddRow(test.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
  78. }
  79. t.Render()
  80. }