| package gitattributes |
| |
| import ( |
| "strings" |
| |
| . "gopkg.in/check.v1" |
| ) |
| |
| type AttributesSuite struct{} |
| |
| var _ = Suite(&AttributesSuite{}) |
| |
| func (s *AttributesSuite) TestAttributes_ReadAttributes(c *C) { |
| lines := []string{ |
| "[attr]sub -a", |
| "[attr]add a", |
| "* sub a", |
| "* !a foo=bar -b c", |
| } |
| |
| mas, err := ReadAttributes(strings.NewReader(strings.Join(lines, "\n")), nil, true) |
| c.Assert(err, IsNil) |
| c.Assert(len(mas), Equals, 4) |
| |
| c.Assert(mas[0].Name, Equals, "sub") |
| c.Assert(mas[0].Pattern, IsNil) |
| c.Assert(mas[0].Attributes[0].IsUnset(), Equals, true) |
| |
| c.Assert(mas[1].Name, Equals, "add") |
| c.Assert(mas[1].Pattern, IsNil) |
| c.Assert(mas[1].Attributes[0].IsSet(), Equals, true) |
| |
| c.Assert(mas[2].Name, Equals, "*") |
| c.Assert(mas[2].Pattern, NotNil) |
| c.Assert(mas[2].Attributes[0].IsSet(), Equals, true) |
| |
| c.Assert(mas[3].Name, Equals, "*") |
| c.Assert(mas[3].Pattern, NotNil) |
| c.Assert(mas[3].Attributes[0].IsUnspecified(), Equals, true) |
| c.Assert(mas[3].Attributes[1].IsValueSet(), Equals, true) |
| c.Assert(mas[3].Attributes[1].Value(), Equals, "bar") |
| c.Assert(mas[3].Attributes[2].IsUnset(), Equals, true) |
| c.Assert(mas[3].Attributes[3].IsSet(), Equals, true) |
| c.Assert(mas[3].Attributes[0].String(), Equals, "a: unspecified") |
| c.Assert(mas[3].Attributes[1].String(), Equals, "foo: bar") |
| c.Assert(mas[3].Attributes[2].String(), Equals, "b: unset") |
| c.Assert(mas[3].Attributes[3].String(), Equals, "c: set") |
| } |
| |
| func (s *AttributesSuite) TestAttributes_ReadAttributesDisallowMacro(c *C) { |
| lines := []string{ |
| "[attr]sub -a", |
| "* a add", |
| } |
| |
| _, err := ReadAttributes(strings.NewReader(strings.Join(lines, "\n")), nil, false) |
| c.Assert(err, Equals, ErrMacroNotAllowed) |
| } |
| |
| func (s *AttributesSuite) TestAttributes_ReadAttributesInvalidName(c *C) { |
| lines := []string{ |
| "[attr]foo!bar -a", |
| } |
| |
| _, err := ReadAttributes(strings.NewReader(strings.Join(lines, "\n")), nil, true) |
| c.Assert(err, Equals, ErrInvalidAttributeName) |
| } |