diff options
author | Flu0r1ne <flur01ne@flu0r1ne.net> | 2021-08-13 16:31:04 -0500 |
---|---|---|
committer | Flu0r1ne <flur01ne@flu0r1ne.net> | 2021-08-13 16:31:04 -0500 |
commit | 3337257fe24b67871406217e98862d34647dd725 (patch) | |
tree | 6bee1bf6bf16d75df0481a254e7abe3bf39d5ab5 /cmd/planr/sub/cli.go | |
parent | 4f6854fa9cbbafe78ea3fe0373f63db93297a39b (diff) | |
download | planr-3337257fe24b67871406217e98862d34647dd725.tar.xz planr-3337257fe24b67871406217e98862d34647dd725.zip |
Add colorized output and build traces
Diffstat (limited to 'cmd/planr/sub/cli.go')
-rw-r--r-- | cmd/planr/sub/cli.go | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/cmd/planr/sub/cli.go b/cmd/planr/sub/cli.go new file mode 100644 index 0000000..42d1c81 --- /dev/null +++ b/cmd/planr/sub/cli.go @@ -0,0 +1,89 @@ +package sub + +import ( + "github.com/fatih/color" + "golang.flu0r1ne.net/planr" + "fmt" +) + +var ( + col_pass = color.New(color.FgGreen) + col_fail = color.New(color.FgRed) + col_title = color.New(color.FgHiWhite) + col_label = color.New(color.FgCyan) +); + +func tcTitle(tc planr.TestCase) string { + title := tc.Cname + + if tc.Config.Title != nil { + title = *tc.Config.Title + } + + return title +} + +func tcStatus(tc planr.TestCase) string { + status := "SILENT" + + if tc.Result != nil { + if tc.Result.Status == planr.PASSING { + status = "PASS" + } else { + status = "FAIL" + } + } + + return status +} + +func pprintLabeled(label, value string) { + col_label.Printf(" %s: ", label) + fmt.Println(value) +} + +func tcStatusLine(tc planr.TestCase) { + title := tcTitle(tc) + status := tcStatus(tc) + + if status == "PASS" { + col_pass.Printf("[%s] ", status); + } else { + col_fail.Printf("[%s] ", status); + } + + col_title.Println(title); +} + +func tcPprint(tc planr.TestCase) { + tcStatusLine(tc) + + if tc.Config.Points != nil { + points := fmt.Sprintf("%.1f", *tc.Config.Points) + pprintLabeled("points", points) + } + + if tc.Config.Description != nil { + pprintLabeled("description", *tc.Config.Description) + } + + if tc.Result.DebugOutput != "" { + pprintLabeled("debug output", tc.Result.DebugOutput) + } + + if tc.Result.FailureMsg != "" { + pprintLabeled("failure", tc.Result.FailureMsg); + } + + fmt.Println() +} + +func printResults(passed, tc_total int, earned, points_total float64) { + col_title.Println("Final Results:") + + pprintLabeled("passed", fmt.Sprintf("%d/%d", passed, tc_total)); + + pprintLabeled("score", fmt.Sprintf( + "%.2f/%.2f ~= %.1f%%", earned, points_total, earned / points_total * 100, + )); +} |