github.com/crowdsecurity/crowdsec@v1.6.1/cmd/crowdsec-cli/hubtest_table.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io" 6 7 "github.com/aquasecurity/table" 8 9 "github.com/crowdsecurity/crowdsec/pkg/emoji" 10 "github.com/crowdsecurity/crowdsec/pkg/hubtest" 11 ) 12 13 func hubTestResultTable(out io.Writer, testResult map[string]bool) { 14 t := newLightTable(out) 15 t.SetHeaders("Test", "Result") 16 t.SetHeaderAlignment(table.AlignLeft) 17 t.SetAlignment(table.AlignLeft) 18 19 for testName, success := range testResult { 20 status := emoji.CheckMarkButton 21 if !success { 22 status = emoji.CrossMark 23 } 24 25 t.AddRow(testName, status) 26 } 27 28 t.Render() 29 } 30 31 func hubTestListTable(out io.Writer, tests []*hubtest.HubTestItem) { 32 t := newLightTable(out) 33 t.SetHeaders("Name", "Path") 34 t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft) 35 t.SetAlignment(table.AlignLeft, table.AlignLeft) 36 37 for _, test := range tests { 38 t.AddRow(test.Name, test.Path) 39 } 40 41 t.Render() 42 } 43 44 func hubTestParserCoverageTable(out io.Writer, coverage []hubtest.Coverage) { 45 t := newLightTable(out) 46 t.SetHeaders("Parser", "Status", "Number of tests") 47 t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft) 48 t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft) 49 50 parserTested := 0 51 52 for _, test := range coverage { 53 status := emoji.RedCircle 54 if test.TestsCount > 0 { 55 status = emoji.GreenCircle 56 parserTested++ 57 } 58 59 t.AddRow(test.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn))) 60 } 61 62 t.Render() 63 } 64 65 func hubTestAppsecRuleCoverageTable(out io.Writer, coverage []hubtest.Coverage) { 66 t := newLightTable(out) 67 t.SetHeaders("Appsec Rule", "Status", "Number of tests") 68 t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft) 69 t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft) 70 71 parserTested := 0 72 73 for _, test := range coverage { 74 status := emoji.RedCircle 75 if test.TestsCount > 0 { 76 status = emoji.GreenCircle 77 parserTested++ 78 } 79 80 t.AddRow(test.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn))) 81 } 82 83 t.Render() 84 } 85 86 func hubTestScenarioCoverageTable(out io.Writer, coverage []hubtest.Coverage) { 87 t := newLightTable(out) 88 t.SetHeaders("Scenario", "Status", "Number of tests") 89 t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft) 90 t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft) 91 92 parserTested := 0 93 94 for _, test := range coverage { 95 status := emoji.RedCircle 96 if test.TestsCount > 0 { 97 status = emoji.GreenCircle 98 parserTested++ 99 } 100 101 t.AddRow(test.Name, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn))) 102 } 103 104 t.Render() 105 }