github.com/gsquire/gb@v0.4.4-0.20161112235727-3982dc872064/cmd/gb/testflag_test.go (about)

     1  package main
     2  
     3  import (
     4  	"errors"
     5  	"reflect"
     6  	"testing"
     7  )
     8  
     9  func TestTestFlagsPreParse(t *testing.T) {
    10  	tests := []struct {
    11  		args  []string // The command line arguments to parse
    12  		pargs []string // The expected arguments for flag.Parse
    13  		eargs []string // The expected "extra" arguments to pass to the test binary
    14  		err   error
    15  	}{
    16  		{
    17  			args:  []string{"-q", "-test", "-debug"},
    18  			eargs: []string{"-q", "-test", "-debug"},
    19  		}, {
    20  			args:  []string{"-v", "-debug", "package_name"},
    21  			pargs: []string{"-v", "package_name"},
    22  			eargs: []string{"-v", "-debug"},
    23  		}, {
    24  			args:  []string{"-debug", "package_name", "-v"},
    25  			pargs: []string{"-v", "package_name"},
    26  			eargs: []string{"-debug", "-v"},
    27  		}, {
    28  			args:  []string{"-q", "-debug", "package_name"},
    29  			pargs: []string{"package_name"},
    30  			eargs: []string{"-q", "-debug"},
    31  		}, {
    32  			args:  []string{"-bench"},
    33  			eargs: []string{"-bench"},
    34  		}, {
    35  			args:  []string{"-bench=."},
    36  			eargs: []string{"-bench=."},
    37  		}, {
    38  			args:  []string{"-bench", "."},
    39  			eargs: []string{"-bench=."},
    40  		}, {
    41  			args:  []string{"-bench", "Test*"},
    42  			eargs: []string{"-bench=Test*"},
    43  		}, {
    44  			args:  []string{"-benchmem"},
    45  			eargs: []string{"-benchmem"},
    46  		}, {
    47  			args:  []string{"-benchtime", "2s"},
    48  			eargs: []string{"-benchtime=2s"},
    49  		}, {
    50  			args:  []string{"-blockprofile", "profile"},
    51  			eargs: []string{"-blockprofile=profile"},
    52  		}, {
    53  			args:  []string{"-blockprofile", "profile", "-cover"},
    54  			pargs: []string{"-cover"},
    55  			eargs: []string{"-blockprofile=profile"},
    56  		}, {
    57  			args:  []string{"-blockprofilerate", "2"},
    58  			eargs: []string{"-blockprofilerate=2"},
    59  		}, {
    60  			args:  []string{"-coverprofile", "c.out"},
    61  			eargs: []string{"-coverprofile=c.out"},
    62  		}, {
    63  			args:  []string{"-cpu", "1"},
    64  			eargs: []string{"-cpu=1"},
    65  		}, {
    66  			args:  []string{"-cpu", "1"},
    67  			eargs: []string{"-cpu=1"},
    68  		}, {
    69  			args:  []string{"-timeout"},
    70  			eargs: []string{"-timeout"},
    71  		}, {
    72  			args:  []string{"-timeout", "2s"},
    73  			eargs: []string{"-timeout=2s"},
    74  		}, {
    75  			args:  []string{"-test.run", "test"},
    76  			eargs: []string{"-test.run=test"},
    77  		}, {
    78  			args:  []string{"-test.bench", "Test*"},
    79  			eargs: []string{"-test.bench=Test*"},
    80  		}, {
    81  			args:  []string{"-test.bench=Test*"},
    82  			eargs: []string{"-test.bench=Test*"},
    83  		}, {
    84  			args: []string{"-test.run", "Test*", "-test.run", "Test2*"},
    85  			err:  errors.New("\"run\" flag may be set only once"),
    86  		}, {
    87  			args:  []string{"-cover=true"},
    88  			pargs: []string{"-cover=true"},
    89  		}, {
    90  			args:  []string{"-cover=false"},
    91  			pargs: []string{"-cover=false"},
    92  		}, {
    93  			args: []string{"-cover=notabool"},
    94  			err:  errors.New("illegal bool flag value notabool"),
    95  		}, {
    96  			args: []string{"-run", "Test*", "-run", "Test2*"},
    97  			err:  errors.New("\"run\" flag may be set only once"),
    98  		}, {
    99  			args:  []string{"-short"},
   100  			eargs: []string{"-short"},
   101  		}, {
   102  			args:  []string{"-memprofilerate", "1"},
   103  			eargs: []string{"-memprofilerate=1"},
   104  		}, {
   105  			args:  []string{"-coverpkg", "package"},
   106  			pargs: []string{"-coverpkg", "package"},
   107  		}, {
   108  			args:  []string{"-P", "1"},
   109  			pargs: []string{"-P", "1"},
   110  		}, {
   111  			args:  []string{"-P=1", "-short"},
   112  			pargs: []string{"-P=1"},
   113  			eargs: []string{"-short"},
   114  		}, {
   115  			args:  []string{"-name=jardin"},
   116  			eargs: []string{"-name=jardin"},
   117  		}, {
   118  			args:  []string{"-cover", "-name=jardin"},
   119  			pargs: []string{"-cover"},
   120  			eargs: []string{"-name=jardin"},
   121  		}, {
   122  			args:  []string{"-race", "-name=jardin"},
   123  			pargs: []string{"-race"},
   124  			eargs: []string{"-name=jardin"},
   125  		}}
   126  
   127  	for _, tt := range tests {
   128  		for k, v := range testFlagDefn {
   129  			if v.present {
   130  				testFlagDefn[k].present = false
   131  			}
   132  		}
   133  		pargs, eargs, err := TestFlagsExtraParse(tt.args)
   134  		if tt.err != nil && (err == nil || (err != nil && tt.err.Error() != err.Error())) {
   135  			t.Errorf("TestExtraFlags(%v): want err = '%v', got = '%v'", tt.args, tt.err, err)
   136  		} else if tt.err == nil && (!reflect.DeepEqual(pargs, tt.pargs) || !reflect.DeepEqual(eargs, tt.eargs)) {
   137  			t.Errorf("TestExtraFlags(%v): want (%v,%v), got (%v,%v)", tt.args, tt.pargs, tt.eargs, pargs, eargs)
   138  		}
   139  	}
   140  }
   141  
   142  func TestTestFlags(t *testing.T) {
   143  	tests := []struct {
   144  		eargs []string // Extra test binary arguments
   145  		targs []string // The expected test binary arguments
   146  	}{
   147  		{
   148  			eargs: []string{"-q", "-debug"},
   149  			targs: []string{"-test.v=true", "-debug"},
   150  		}, {
   151  			eargs: []string{"-v", "-debug"},
   152  			targs: []string{"-test.v=true", "-debug"},
   153  		}, {
   154  			eargs: []string{"-bench"},
   155  			targs: []string{"-test.bench"},
   156  		}, {
   157  			eargs: []string{"-bench", "."},
   158  			targs: []string{"-test.bench", "."},
   159  		}, {
   160  			eargs: []string{"-bench='Test*'"},
   161  			targs: []string{"-test.bench='Test*'"},
   162  		}, {
   163  			eargs: []string{"-benchmem"},
   164  			targs: []string{"-test.benchmem=true"},
   165  		}, {
   166  			eargs: []string{"-benchtime"},
   167  			targs: []string{"-test.benchtime"},
   168  		}, {
   169  			eargs: []string{"-benchtime", "2s"},
   170  			targs: []string{"-test.benchtime", "2s"},
   171  		}, {
   172  			eargs: []string{"-benchtime=2s"},
   173  			targs: []string{"-test.benchtime=2s"},
   174  		}, {
   175  			eargs: []string{"-blockprofile", "profile"},
   176  			targs: []string{"-test.blockprofile", "profile"},
   177  		}, {
   178  			eargs: []string{"-blockprofile=profile"},
   179  			targs: []string{"-test.blockprofile=profile"},
   180  		}, {
   181  			eargs: []string{"-blockprofile"},
   182  			targs: []string{"-test.blockprofile"},
   183  		}, {
   184  			eargs: []string{"-cpuprofile"},
   185  			targs: []string{"-test.cpuprofile"},
   186  		}, {
   187  			eargs: []string{"-memprofile"},
   188  			targs: []string{"-test.memprofile"},
   189  		}, {
   190  			eargs: []string{"-short"},
   191  			targs: []string{"-test.short=true"},
   192  		}, {
   193  			eargs: []string{"-memprofilerate", "1"},
   194  			targs: []string{"-test.memprofilerate", "1"},
   195  		}, {
   196  			eargs: []string{"-test.run=test"},
   197  			targs: []string{"-test.run=test"},
   198  		}, {
   199  			eargs: []string{"-test.short"},
   200  			targs: []string{"-test.short"},
   201  		}, {
   202  			eargs: []string{"-tags", "a,b,c"},
   203  			targs: []string{"-tags", "a,b,c"},
   204  		}}
   205  
   206  	for _, tt := range tests {
   207  		targs := TestFlags(tt.eargs)
   208  		if !reflect.DeepEqual(targs, tt.targs) {
   209  			t.Errorf("TestFlags(%v): want %v, got %v", tt.eargs, tt.targs, targs)
   210  		}
   211  	}
   212  }