| 184 | } |
| 185 | |
| 186 | func TestLevelAsFlagValue(t *testing.T) { |
| 187 | var ( |
| 188 | buf bytes.Buffer |
| 189 | lvl Level |
| 190 | ) |
| 191 | fs := flag.NewFlagSet("levelTest", flag.ContinueOnError) |
| 192 | fs.SetOutput(&buf) |
| 193 | fs.Var(&lvl, "level", "log level") |
| 194 | |
| 195 | for _, expected := range []Level{DebugLevel, InfoLevel, WarnLevel, ErrorLevel, DPanicLevel, PanicLevel, FatalLevel} { |
| 196 | assert.NoError(t, fs.Parse([]string{"-level", expected.String()})) |
| 197 | assert.Equal(t, expected, lvl, "Unexpected level after parsing flag.") |
| 198 | assert.Equal(t, expected, lvl.Get(), "Unexpected output using flag.Getter API.") |
| 199 | assert.Empty(t, buf.String(), "Unexpected error output parsing level flag.") |
| 200 | buf.Reset() |
| 201 | } |
| 202 | |
| 203 | assert.Error(t, fs.Parse([]string{"-level", "nope"})) |
| 204 | assert.Equal( |
| 205 | t, |
| 206 | `invalid value "nope" for flag -level: unrecognized level: "nope"`, |
| 207 | strings.Split(buf.String(), "\n")[0], // second line is help message |
| 208 | "Unexpected error output from invalid flag input.", |
| 209 | ) |
| 210 | } |
| 211 | |
| 212 | // enablerWithCustomLevel is a LevelEnabler that implements a custom Level |
| 213 | // method. |