2019-03-27 12:33:00 +03:00
// Copyright 2018 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-03-27 12:33:00 +03:00
package git
import (
"fmt"
2021-09-22 08:38:34 +03:00
"io"
2019-03-27 12:33:00 +03:00
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
)
func TestRepository_GetBlob_Found ( t * testing . T ) {
repoPath := filepath . Join ( testReposDir , "repo1_bare" )
2022-03-29 22:13:41 +03:00
r , err := openRepositoryWithDefaultContext ( repoPath )
2019-03-27 12:33:00 +03:00
assert . NoError ( t , err )
2019-11-13 10:01:19 +03:00
defer r . Close ( )
2019-03-27 12:33:00 +03:00
testCases := [ ] struct {
OID string
Data [ ] byte
} {
{ "e2129701f1a4d54dc44f03c93bca0a2aec7c5449" , [ ] byte ( "file1\n" ) } ,
{ "6c493ff740f9380390d5c9ddef4af18697ac9375" , [ ] byte ( "file2\n" ) } ,
}
for _ , testCase := range testCases {
blob , err := r . GetBlob ( testCase . OID )
assert . NoError ( t , err )
2019-04-19 15:17:27 +03:00
dataReader , err := blob . DataAsync ( )
2019-03-27 12:33:00 +03:00
assert . NoError ( t , err )
2021-09-22 08:38:34 +03:00
data , err := io . ReadAll ( dataReader )
2021-05-10 04:27:03 +03:00
assert . NoError ( t , dataReader . Close ( ) )
2019-03-27 12:33:00 +03:00
assert . NoError ( t , err )
assert . Equal ( t , testCase . Data , data )
}
}
func TestRepository_GetBlob_NotExist ( t * testing . T ) {
repoPath := filepath . Join ( testReposDir , "repo1_bare" )
2022-03-29 22:13:41 +03:00
r , err := openRepositoryWithDefaultContext ( repoPath )
2019-03-27 12:33:00 +03:00
assert . NoError ( t , err )
2019-11-13 10:01:19 +03:00
defer r . Close ( )
2019-03-27 12:33:00 +03:00
testCase := "0000000000000000000000000000000000000000"
testError := ErrNotExist { testCase , "" }
blob , err := r . GetBlob ( testCase )
assert . Nil ( t , blob )
assert . EqualError ( t , err , testError . Error ( ) )
}
func TestRepository_GetBlob_NoId ( t * testing . T ) {
repoPath := filepath . Join ( testReposDir , "repo1_bare" )
2022-03-29 22:13:41 +03:00
r , err := openRepositoryWithDefaultContext ( repoPath )
2019-03-27 12:33:00 +03:00
assert . NoError ( t , err )
2019-11-13 10:01:19 +03:00
defer r . Close ( )
2019-03-27 12:33:00 +03:00
testCase := ""
2023-12-19 10:20:47 +03:00
testError := fmt . Errorf ( "length %d has no matched object format: %s" , len ( testCase ) , testCase )
2019-03-27 12:33:00 +03:00
blob , err := r . GetBlob ( testCase )
assert . Nil ( t , blob )
assert . EqualError ( t , err , testError . Error ( ) )
}