File: hubtest_table.go

package info (click to toggle)
crowdsec 1.4.6-10
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 18,492 kB
  • sloc: sh: 2,870; makefile: 386; python: 74
file content (80 lines) | stat: -rw-r--r-- 2,090 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main

import (
	"fmt"
	"io"

	"github.com/aquasecurity/table"
	"github.com/enescakir/emoji"

	"github.com/crowdsecurity/crowdsec/pkg/hubtest"
)

func hubTestResultTable(out io.Writer, testResult map[string]bool) {
	t := newLightTable(out)
	t.SetHeaders("Test", "Result")
	t.SetHeaderAlignment(table.AlignLeft)
	t.SetAlignment(table.AlignLeft)

	for testName, success := range testResult {
		status := emoji.CheckMarkButton.String()
		if !success {
			status = emoji.CrossMark.String()
		}

		t.AddRow(testName, status)
	}

	t.Render()
}

func hubTestListTable(out io.Writer, tests []*hubtest.HubTestItem) {
	t := newLightTable(out)
	t.SetHeaders("Name", "Path")
	t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft)
	t.SetAlignment(table.AlignLeft, table.AlignLeft)

	for _, test := range tests {
		t.AddRow(test.Name, test.Path)
	}

	t.Render()
}

func hubTestParserCoverageTable(out io.Writer, coverage []hubtest.ParserCoverage) {
	t := newLightTable(out)
	t.SetHeaders("Parser", "Status", "Number of tests")
	t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
	t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)

	parserTested := 0
	for _, test := range coverage {
		status := emoji.RedCircle.String()
		if test.TestsCount > 0 {
			status = emoji.GreenCircle.String()
			parserTested++
		}
		t.AddRow(test.Parser, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
	}

	t.Render()
}

func hubTestScenarioCoverageTable(out io.Writer, coverage []hubtest.ScenarioCoverage) {
	t := newLightTable(out)
	t.SetHeaders("Scenario", "Status", "Number of tests")
	t.SetHeaderAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)
	t.SetAlignment(table.AlignLeft, table.AlignLeft, table.AlignLeft)

	parserTested := 0
	for _, test := range coverage {
		status := emoji.RedCircle.String()
		if test.TestsCount > 0 {
			status = emoji.GreenCircle.String()
			parserTested++
		}
		t.AddRow(test.Scenario, status, fmt.Sprintf("%d times (across %d tests)", test.TestsCount, len(test.PresentIn)))
	}

	t.Render()
}