1package git
2
3import (
4 "testing"
5
6 "github.com/matryer/is"
7)
8
9func TestParseAttr(t *testing.T) {
10 cases := []struct {
11 in string
12 file string
13 want []Attribute
14 }{
15 {
16 in: "org/example/MyClass.java: diff: java\n",
17 file: "org/example/MyClass.java",
18 want: []Attribute{
19 {
20 Name: "diff",
21 Value: "java",
22 },
23 },
24 },
25 {
26 in: `org/example/MyClass.java: crlf: unset
27org/example/MyClass.java: diff: java
28org/example/MyClass.java: myAttr: set`,
29 file: "org/example/MyClass.java",
30 want: []Attribute{
31 {
32 Name: "crlf",
33 Value: "unset",
34 },
35 {
36 Name: "diff",
37 Value: "java",
38 },
39 {
40 Name: "myAttr",
41 Value: "set",
42 },
43 },
44 },
45 {
46 in: `org/example/MyClass.java: diff: java
47org/example/MyClass.java: myAttr: set`,
48 file: "org/example/MyClass.java",
49 want: []Attribute{
50 {
51 Name: "diff",
52 Value: "java",
53 },
54 {
55 Name: "myAttr",
56 Value: "set",
57 },
58 },
59 },
60 {
61 in: `README: caveat: unspecified`,
62 file: "README",
63 want: []Attribute{
64 {
65 Name: "caveat",
66 Value: "unspecified",
67 },
68 },
69 },
70 {
71 in: "",
72 file: "foo",
73 want: []Attribute{},
74 },
75 {
76 in: "\n",
77 file: "foo",
78 want: []Attribute{},
79 },
80 }
81
82 is := is.New(t)
83 for _, c := range cases {
84 attrs := parseAttributes(c.file, []byte(c.in))
85 if len(attrs) != len(c.want) {
86 t.Fatalf("parseAttributes(%q, %q) = %v, want %v", c.file, c.in, attrs, c.want)
87 }
88
89 is.Equal(attrs, c.want)
90 }
91}