verbose: test verbose behaviour
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
This commit is contained in:
parent
d1415305ae
commit
df29068d16
|
@ -0,0 +1,67 @@
|
|||
package verbose_test
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.ophivana.moe/cat/fortify/internal/verbose"
|
||||
)
|
||||
|
||||
const (
|
||||
testVerbose = "GO_TEST_VERBOSE"
|
||||
wantStdout = "fortify: println\nfortify: printf"
|
||||
)
|
||||
|
||||
func TestPrinter(t *testing.T) {
|
||||
switch os.Getenv(testVerbose) {
|
||||
case "0":
|
||||
verbose.Set(false)
|
||||
case "1":
|
||||
verbose.Set(true)
|
||||
default:
|
||||
return
|
||||
}
|
||||
|
||||
verbose.Println("println")
|
||||
verbose.Printf("%s", "printf")
|
||||
}
|
||||
|
||||
func TestPrintf_Println(t *testing.T) {
|
||||
testPrintfPrintln(t, false)
|
||||
testPrintfPrintln(t, true)
|
||||
|
||||
// make -cover happy
|
||||
stdout := os.Stdout
|
||||
t.Cleanup(func() {
|
||||
os.Stdout = stdout
|
||||
})
|
||||
os.Stdout = nil
|
||||
verbose.Set(true)
|
||||
verbose.Printf("")
|
||||
verbose.Println()
|
||||
}
|
||||
|
||||
func testPrintfPrintln(t *testing.T, v bool) {
|
||||
t.Run("start verbose printer with verbose "+strconv.FormatBool(v), func(t *testing.T) {
|
||||
stdout, stderr := new(strings.Builder), new(strings.Builder)
|
||||
stdout.Grow(len(wantStdout))
|
||||
cmd := exec.Command(os.Args[0], "-test.run=TestPrinter")
|
||||
cmd.Stdout, cmd.Stderr = stdout, stderr
|
||||
if v {
|
||||
cmd.Env = append(cmd.Env, testVerbose+"=1")
|
||||
} else {
|
||||
cmd.Env = append(cmd.Env, testVerbose+"=0")
|
||||
}
|
||||
if err := cmd.Run(); err != nil {
|
||||
panic("cannot run printer process: " + err.Error() + " stderr: " + stderr.String())
|
||||
}
|
||||
|
||||
if got := stdout.String(); strings.Contains(got, wantStdout) != v {
|
||||
t.Errorf("Print: got %v; want %t",
|
||||
got, v)
|
||||
}
|
||||
})
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package verbose_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"git.ophivana.moe/cat/fortify/internal/verbose"
|
||||
)
|
||||
|
||||
func TestGetSet(t *testing.T) {
|
||||
verbose.Set(false)
|
||||
if verbose.Get() {
|
||||
t.Errorf("Get() = true, want false")
|
||||
}
|
||||
|
||||
verbose.Set(true)
|
||||
if !verbose.Get() {
|
||||
t.Errorf("Get() = false, want true")
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue