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) }