github.com/kekek/gb@v0.4.5-0.20170222120241-d4ba64b0b297/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 }