diff --git a/git/gitattr/attr.go b/git/gitattr/attr.go index 2129f51b..af5c4d3c 100644 --- a/git/gitattr/attr.go +++ b/git/gitattr/attr.go @@ -105,6 +105,9 @@ func ParseLines(r io.Reader) ([]*Line, error) { } else if eq := strings.Index(s, "="); eq > -1 { attr.K = s[:eq] attr.V = s[eq+1:] + } else { + attr.K = s + attr.V = "true" } attrs = append(attrs, &attr) diff --git a/git/gitattr/attr_test.go b/git/gitattr/attr_test.go index 8073cb92..eaab1842 100644 --- a/git/gitattr/attr_test.go +++ b/git/gitattr/attr_test.go @@ -22,18 +22,19 @@ func TestParseLines(t *testing.T) { func TestParseLinesManyAttrs(t *testing.T) { lines, err := ParseLines(strings.NewReader( - "*.dat filter=lfs diff=lfs merge=lfs -text")) + "*.dat filter=lfs diff=lfs merge=lfs -text crlf")) assert.NoError(t, err) assert.Len(t, lines, 1) assert.Equal(t, lines[0].Pattern.String(), "*.dat") - assert.Len(t, lines[0].Attrs, 4) + assert.Len(t, lines[0].Attrs, 5) assert.Equal(t, lines[0].Attrs[0], &Attr{K: "filter", V: "lfs"}) assert.Equal(t, lines[0].Attrs[1], &Attr{K: "diff", V: "lfs"}) assert.Equal(t, lines[0].Attrs[2], &Attr{K: "merge", V: "lfs"}) assert.Equal(t, lines[0].Attrs[3], &Attr{K: "text", V: "false"}) + assert.Equal(t, lines[0].Attrs[4], &Attr{K: "crlf", V: "true"}) } func TestParseLinesManyLines(t *testing.T) { @@ -41,14 +42,16 @@ func TestParseLinesManyLines(t *testing.T) { "*.dat filter=lfs diff=lfs merge=lfs -text", "*.jpg filter=lfs diff=lfs merge=lfs -text", "# *.pdf filter=lfs diff=lfs merge=lfs -text", - "*.png filter=lfs diff=lfs merge=lfs -text"}, "\n"))) + "*.png filter=lfs diff=lfs merge=lfs -text", + "*.txt text"}, "\n"))) assert.NoError(t, err) - assert.Len(t, lines, 3) + assert.Len(t, lines, 4) assert.Equal(t, lines[0].Pattern.String(), "*.dat") assert.Equal(t, lines[1].Pattern.String(), "*.jpg") assert.Equal(t, lines[2].Pattern.String(), "*.png") + assert.Equal(t, lines[3].Pattern.String(), "*.txt") assert.Len(t, lines[0].Attrs, 4) assert.Equal(t, lines[0].Attrs[0], &Attr{K: "filter", V: "lfs"}) @@ -67,6 +70,9 @@ func TestParseLinesManyLines(t *testing.T) { assert.Equal(t, lines[2].Attrs[1], &Attr{K: "diff", V: "lfs"}) assert.Equal(t, lines[2].Attrs[2], &Attr{K: "merge", V: "lfs"}) assert.Equal(t, lines[2].Attrs[3], &Attr{K: "text", V: "false"}) + + assert.Len(t, lines[3].Attrs, 1) + assert.Equal(t, lines[3].Attrs[0], &Attr{K: "text", V: "true"}) } func TestParseLinesUnset(t *testing.T) {