File: attributes_test.go

package info (click to toggle)
golang-github-go-git-go-git 5.4.2-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 3,072 kB
  • sloc: sh: 61; makefile: 29
file content (67 lines) | stat: -rw-r--r-- 1,936 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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)
}