dev: add test for govet custom formatter
This commit is contained in:
parent
85dec0c61b
commit
fd825488bf
@ -63,6 +63,10 @@ func TestUnsafeOk(t *testing.T) {
|
|||||||
testshared.NewLintRunner(t).Run("--enable-all", getTestDataDir("unsafe")).ExpectNoIssues()
|
testshared.NewLintRunner(t).Run("--enable-all", getTestDataDir("unsafe")).ExpectNoIssues()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGovetCustomFormatter(t *testing.T) {
|
||||||
|
testshared.NewLintRunner(t).Run(getTestDataDir("govet_custom_formatter")).ExpectNoIssues()
|
||||||
|
}
|
||||||
|
|
||||||
func TestSkippedDirsNoMatchArg(t *testing.T) {
|
func TestSkippedDirsNoMatchArg(t *testing.T) {
|
||||||
dir := getTestDataDir("skipdirs", "skip_me", "nested")
|
dir := getTestDataDir("skipdirs", "skip_me", "nested")
|
||||||
r := testshared.NewLintRunner(t).Run("--print-issued-lines=false", "--no-config", "--skip-dirs", dir, "-Egolint", dir)
|
r := testshared.NewLintRunner(t).Run("--print-issued-lines=false", "--no-config", "--skip-dirs", dir, "-Egolint", dir)
|
||||||
|
72
test/testdata/govet_custom_formatter/main.go
vendored
Normal file
72
test/testdata/govet_custom_formatter/main.go
vendored
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
escape = "\x1b"
|
||||||
|
reset = escape + "[0m"
|
||||||
|
green = escape + "[32m"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Bar is a progress bar.
|
||||||
|
type Bar float64
|
||||||
|
|
||||||
|
var _ fmt.Formatter = Bar(1.0)
|
||||||
|
|
||||||
|
// Format the progress bar as output
|
||||||
|
func (h Bar) Format(state fmt.State, r rune) {
|
||||||
|
switch r {
|
||||||
|
case 'r':
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("%v: unexpected format character", float64(h)))
|
||||||
|
}
|
||||||
|
|
||||||
|
if h > 1.0 {
|
||||||
|
h = 1.0
|
||||||
|
}
|
||||||
|
|
||||||
|
if h < 0.0 {
|
||||||
|
h = 0.0
|
||||||
|
}
|
||||||
|
|
||||||
|
if state.Flag('-') {
|
||||||
|
h = 1.0 - h
|
||||||
|
}
|
||||||
|
|
||||||
|
width, ok := state.Width()
|
||||||
|
if !ok {
|
||||||
|
// default width of 40
|
||||||
|
width = 40
|
||||||
|
}
|
||||||
|
|
||||||
|
var pad int
|
||||||
|
|
||||||
|
extra := len([]byte(green)) + len([]byte(reset))
|
||||||
|
|
||||||
|
p := make([]byte, width+extra)
|
||||||
|
p[0], p[len(p)-1] = '|', '|'
|
||||||
|
pad += 2
|
||||||
|
|
||||||
|
positive := int(Bar(width-pad) * h)
|
||||||
|
negative := width - pad - positive
|
||||||
|
|
||||||
|
n := 1
|
||||||
|
n += copy(p[n:], green)
|
||||||
|
n += copy(p[n:], bytes.Repeat([]byte("+"), positive))
|
||||||
|
n += copy(p[n:], reset)
|
||||||
|
|
||||||
|
if negative > 0 {
|
||||||
|
copy(p[n:len(p)-1], bytes.Repeat([]byte("-"), negative))
|
||||||
|
}
|
||||||
|
|
||||||
|
_, _ = state.Write(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var b Bar = 0.9
|
||||||
|
_, _ = fmt.Fprintf(os.Stdout, "%r", b)
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user