code.gitea.io/gitea@v1.19.3/modules/git/repo_blob_test.go (about) 1 // Copyright 2018 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package git 5 6 import ( 7 "fmt" 8 "io" 9 "path/filepath" 10 "testing" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func TestRepository_GetBlob_Found(t *testing.T) { 16 repoPath := filepath.Join(testReposDir, "repo1_bare") 17 r, err := openRepositoryWithDefaultContext(repoPath) 18 assert.NoError(t, err) 19 defer r.Close() 20 21 testCases := []struct { 22 OID string 23 Data []byte 24 }{ 25 {"e2129701f1a4d54dc44f03c93bca0a2aec7c5449", []byte("file1\n")}, 26 {"6c493ff740f9380390d5c9ddef4af18697ac9375", []byte("file2\n")}, 27 } 28 29 for _, testCase := range testCases { 30 blob, err := r.GetBlob(testCase.OID) 31 assert.NoError(t, err) 32 33 dataReader, err := blob.DataAsync() 34 assert.NoError(t, err) 35 36 data, err := io.ReadAll(dataReader) 37 assert.NoError(t, dataReader.Close()) 38 assert.NoError(t, err) 39 assert.Equal(t, testCase.Data, data) 40 } 41 } 42 43 func TestRepository_GetBlob_NotExist(t *testing.T) { 44 repoPath := filepath.Join(testReposDir, "repo1_bare") 45 r, err := openRepositoryWithDefaultContext(repoPath) 46 assert.NoError(t, err) 47 defer r.Close() 48 49 testCase := "0000000000000000000000000000000000000000" 50 testError := ErrNotExist{testCase, ""} 51 52 blob, err := r.GetBlob(testCase) 53 assert.Nil(t, blob) 54 assert.EqualError(t, err, testError.Error()) 55 } 56 57 func TestRepository_GetBlob_NoId(t *testing.T) { 58 repoPath := filepath.Join(testReposDir, "repo1_bare") 59 r, err := openRepositoryWithDefaultContext(repoPath) 60 assert.NoError(t, err) 61 defer r.Close() 62 63 testCase := "" 64 testError := fmt.Errorf("Length must be 40: %s", testCase) 65 66 blob, err := r.GetBlob(testCase) 67 assert.Nil(t, blob) 68 assert.EqualError(t, err, testError.Error()) 69 }