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 (
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
)
func TestRepository_GetCommitBranches ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare" )
2022-03-29 22:13:41 +03:00
bareRepo1 , err := openRepositoryWithDefaultContext ( bareRepo1Path )
2019-03-27 12:33:00 +03:00
assert . NoError ( t , err )
2019-11-13 10:01:19 +03:00
defer bareRepo1 . Close ( )
2019-03-27 12:33:00 +03:00
// these test case are specific to the repo1_bare test repo
testCases := [ ] struct {
CommitID string
ExpectedBranches [ ] string
} {
{ "2839944139e0de9737a044f78b0e4b40d989a9e3" , [ ] string { "branch1" } } ,
{ "5c80b0245c1c6f8343fa418ec374b13b5d4ee658" , [ ] string { "branch2" } } ,
{ "37991dec2c8e592043f47155ce4808d4580f9123" , [ ] string { "master" } } ,
{ "95bb4d39648ee7e325106df01a621c530863a653" , [ ] string { "branch1" , "branch2" } } ,
{ "8d92fc957a4d7cfd98bc375f0b7bb189a0d6c9f2" , [ ] string { "branch2" , "master" } } ,
{ "master" , [ ] string { "master" } } ,
}
for _ , testCase := range testCases {
commit , err := bareRepo1 . GetCommit ( testCase . CommitID )
assert . NoError ( t , err )
branches , err := bareRepo1 . getBranches ( commit , 2 )
assert . NoError ( t , err )
assert . Equal ( t , testCase . ExpectedBranches , branches )
}
}
func TestGetTagCommitWithSignature ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare" )
2022-03-29 22:13:41 +03:00
bareRepo1 , err := openRepositoryWithDefaultContext ( bareRepo1Path )
2019-07-23 22:28:43 +03:00
assert . NoError ( t , err )
2019-11-13 10:01:19 +03:00
defer bareRepo1 . Close ( )
2019-03-27 12:33:00 +03:00
2023-03-02 08:32:21 +03:00
// both the tag and the commit are signed here, this validates only the commit signature
commit , err := bareRepo1 . GetCommit ( "28b55526e7100924d864dd89e35c1ea62e7a5a32" )
2019-03-27 12:33:00 +03:00
assert . NoError ( t , err )
assert . NotNil ( t , commit )
assert . NotNil ( t , commit . Signature )
// test that signature is not in message
2023-03-02 08:32:21 +03:00
assert . Equal ( t , "signed-commit\n" , commit . CommitMessage )
2019-03-27 12:33:00 +03:00
}
func TestGetCommitWithBadCommitID ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare" )
2022-03-29 22:13:41 +03:00
bareRepo1 , err := openRepositoryWithDefaultContext ( bareRepo1Path )
2019-07-23 22:28:43 +03:00
assert . NoError ( t , err )
2019-11-13 10:01:19 +03:00
defer bareRepo1 . Close ( )
2019-07-23 22:28:43 +03:00
2019-03-27 12:33:00 +03:00
commit , err := bareRepo1 . GetCommit ( "bad_branch" )
assert . Nil ( t , commit )
assert . Error ( t , err )
2019-08-05 23:39:39 +03:00
assert . True ( t , IsErrNotExist ( err ) )
2019-03-27 12:33:00 +03:00
}
2021-03-04 06:41:23 +03:00
func TestIsCommitInBranch ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare" )
2022-03-29 22:13:41 +03:00
bareRepo1 , err := openRepositoryWithDefaultContext ( bareRepo1Path )
2021-03-04 06:41:23 +03:00
assert . NoError ( t , err )
defer bareRepo1 . Close ( )
result , err := bareRepo1 . IsCommitInBranch ( "2839944139e0de9737a044f78b0e4b40d989a9e3" , "branch1" )
assert . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . True ( t , result )
2021-03-04 06:41:23 +03:00
result , err = bareRepo1 . IsCommitInBranch ( "2839944139e0de9737a044f78b0e4b40d989a9e3" , "branch2" )
assert . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . False ( t , result )
2021-03-04 06:41:23 +03:00
}
2021-06-30 20:49:06 +03:00
func TestRepository_CommitsBetweenIDs ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo4_commitsbetween" )
2022-03-29 22:13:41 +03:00
bareRepo1 , err := openRepositoryWithDefaultContext ( bareRepo1Path )
2021-06-30 20:49:06 +03:00
assert . NoError ( t , err )
defer bareRepo1 . Close ( )
cases := [ ] struct {
OldID string
NewID string
ExpectedCommits int
} {
2022-01-20 20:46:10 +03:00
{ "fdc1b615bdcff0f0658b216df0c9209e5ecb7c78" , "78a445db1eac62fe15e624e1137965969addf344" , 1 } , // com1 -> com2
{ "78a445db1eac62fe15e624e1137965969addf344" , "fdc1b615bdcff0f0658b216df0c9209e5ecb7c78" , 0 } , // reset HEAD~, com2 -> com1
{ "78a445db1eac62fe15e624e1137965969addf344" , "a78e5638b66ccfe7e1b4689d3d5684e42c97d7ca" , 1 } , // com2 -> com2_new
2021-06-30 20:49:06 +03:00
}
for i , c := range cases {
commits , err := bareRepo1 . CommitsBetweenIDs ( c . NewID , c . OldID )
assert . NoError ( t , err )
2023-04-23 00:56:27 +03:00
assert . Len ( t , commits , c . ExpectedCommits , "case %d" , i )
2021-06-30 20:49:06 +03:00
}
}