Преглед изворни кода

Fix checking the language of empty files

Fixes #274

Signed-off-by: Vadim Markovtsev <vadim@sourced.tech>
Vadim Markovtsev пре 6 година
родитељ
комит
f46d8ba921
2 измењених фајлова са 19 додато и 4 уклоњено
  1. 1 1
      internal/plumbing/tree_diff.go
  2. 18 3
      internal/plumbing/tree_diff_test.go

+ 1 - 1
internal/plumbing/tree_diff.go

@@ -278,7 +278,7 @@ func (treediff *TreeDiff) checkLanguage(name string, blobHash plumbing.Hash) (bo
 	}
 	buffer := make([]byte, 1024)
 	n, err := reader.Read(buffer)
-	if err != nil {
+	if err != nil && (blob.Size != 0 || err != io.EOF) {
 		return false, err
 	}
 	if n < len(buffer) {

+ 18 - 3
internal/plumbing/tree_diff_test.go

@@ -263,11 +263,16 @@ func TestTreeDiffFork(t *testing.T) {
 
 func TestTreeDiffCheckLanguage(t *testing.T) {
 	td := fixtureTreeDiff()
-	td.Languages["Go"] = true
 	lang, err := td.checkLanguage(
 		"version.go", plumbing.NewHash("975f35a1412b8ae79b5ba2558f71f41e707fd5a9"))
 	assert.NoError(t, err)
 	assert.True(t, lang)
+	td.Languages["go"] = true
+	delete(td.Languages, allLanguages)
+	lang, err = td.checkLanguage(
+		"version.go", plumbing.NewHash("975f35a1412b8ae79b5ba2558f71f41e707fd5a9"))
+	assert.NoError(t, err)
+	assert.True(t, lang)
 }
 
 func TestTreeDiffConsumeEnryFilter(t *testing.T) {
@@ -282,10 +287,20 @@ func TestTreeDiffConsumeEnryFilter(t *testing.T) {
 
 	newDiffs := td.filterDiffs(diffs)
 	assert.Len(t, newDiffs, 2)
-	td.Configure(map[string]interface{}{
+	assert.NoError(t, td.Configure(map[string]interface{}{
 		ConfigTreeDiffEnableBlacklist:     true,
 		ConfigTreeDiffBlacklistedPrefixes: []string{"whatever"},
-	})
+	}))
 	newDiffs = td.filterDiffs(diffs)
 	assert.Len(t, newDiffs, 0)
 }
+
+func TestTreeDiffCheckLanguageEmpty(t *testing.T) {
+	td := fixtureTreeDiff()
+	td.Languages["python"] = true
+	delete(td.Languages, allLanguages)
+	lang, err := td.checkLanguage(
+		"__init__.py", plumbing.NewHash("e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"))
+	assert.NoError(t, err)
+	assert.True(t, lang)
+}