| 372 | } |
| 373 | |
| 374 | func (s *ParserSuite) TestParseRefWithInvalidName(c *C) { |
| 375 | datas := map[string]error{ |
| 376 | ".master": &ErrInvalidRevision{`must not start with "."`}, |
| 377 | "/master": &ErrInvalidRevision{`must not start with "/"`}, |
| 378 | "master/": &ErrInvalidRevision{`must not end with "/"`}, |
| 379 | "master.": &ErrInvalidRevision{`must not end with "."`}, |
| 380 | "refs/remotes/.origin/HEAD": &ErrInvalidRevision{`must not contains "/."`}, |
| 381 | "test..test": &ErrInvalidRevision{`must not contains ".."`}, |
| 382 | "test..": &ErrInvalidRevision{`must not contains ".."`}, |
| 383 | "test test": &ErrInvalidRevision{`must not contains " "`}, |
| 384 | "test*test": &ErrInvalidRevision{`must not contains "*"`}, |
| 385 | "test?test": &ErrInvalidRevision{`must not contains "?"`}, |
| 386 | "test\\test": &ErrInvalidRevision{`must not contains "\"`}, |
| 387 | "test[test": &ErrInvalidRevision{`must not contains "["`}, |
| 388 | "te//st": &ErrInvalidRevision{`must not contains consecutively "/"`}, |
| 389 | "refs/remotes/test.lock/HEAD": &ErrInvalidRevision{`cannot end with .lock`}, |
| 390 | "test.lock": &ErrInvalidRevision{`cannot end with .lock`}, |
| 391 | } |
| 392 | |
| 393 | for s, e := range datas { |
| 394 | parser := NewParser(bytes.NewBufferString(s)) |
| 395 | |
| 396 | _, err := parser.parseRef() |
| 397 | |
| 398 | c.Assert(err, DeepEquals, e) |
| 399 | } |
| 400 | } |
| 401 | |
| 402 | func FuzzParser(f *testing.F) { |
| 403 | f.Add("@{2016-12-16T21:42:47Z}") |