77 строки
		
	
	
	
		
			1,7 КиБ
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			77 строки
		
	
	
	
		
			1,7 КиБ
		
	
	
	
		
			Go
		
	
	
	
	
	
| package godog
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"fmt"
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/DATA-DOG/godog/colors"
 | |
| )
 | |
| 
 | |
| func TestFlagsShouldRandomizeAndGenerateSeed(t *testing.T) {
 | |
| 	var opt Options
 | |
| 	flags := FlagSet(&opt)
 | |
| 	if err := flags.Parse([]string{"--random"}); err != nil {
 | |
| 		t.Fatalf("unable to parse flags: %v", err)
 | |
| 	}
 | |
| 
 | |
| 	if opt.Randomize <= 0 {
 | |
| 		t.Fatal("should have generated random seed")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestFlagsShouldRandomizeByGivenSeed(t *testing.T) {
 | |
| 	var opt Options
 | |
| 	flags := FlagSet(&opt)
 | |
| 	if err := flags.Parse([]string{"--random=123"}); err != nil {
 | |
| 		t.Fatalf("unable to parse flags: %v", err)
 | |
| 	}
 | |
| 
 | |
| 	if opt.Randomize != 123 {
 | |
| 		t.Fatalf("expected random seed to be: 123, but it was: %d", opt.Randomize)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestFlagsShouldParseFormat(t *testing.T) {
 | |
| 	cases := map[string][]string{
 | |
| 		"pretty":   {},
 | |
| 		"progress": {"-f", "progress"},
 | |
| 		"junit":    {"-f=junit"},
 | |
| 		"custom":   {"--format", "custom"},
 | |
| 		"cust":     {"--format=cust"},
 | |
| 	}
 | |
| 
 | |
| 	for format, args := range cases {
 | |
| 		var opt Options
 | |
| 		flags := FlagSet(&opt)
 | |
| 		if err := flags.Parse(args); err != nil {
 | |
| 			t.Fatalf("unable to parse flags: %v", err)
 | |
| 		}
 | |
| 
 | |
| 		if opt.Format != format {
 | |
| 			t.Fatalf("expected format: %s, but it was: %s", format, opt.Format)
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestFlagsUsageShouldIncludeFormatDescriptons(t *testing.T) {
 | |
| 	var buf bytes.Buffer
 | |
| 	output := colors.Uncolored(&buf)
 | |
| 
 | |
| 	// register some custom formatter
 | |
| 	Format("custom", "custom format description", junitFunc)
 | |
| 
 | |
| 	var opt Options
 | |
| 	flags := FlagSet(&opt)
 | |
| 	usage(flags, output)()
 | |
| 
 | |
| 	out := buf.String()
 | |
| 
 | |
| 	for name, desc := range AvailableFormatters() {
 | |
| 		match := fmt.Sprintf("%s: %s\n", name, desc)
 | |
| 		if idx := strings.Index(out, match); idx == -1 {
 | |
| 			t.Fatalf("could not locate format: %s description in flag usage", name)
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
