2024-01-19 19:05:02 +03:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
//go:build !gogit
package git
import (
"path/filepath"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestCommitsCountSha256 ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare_sha256" )
commitsCount , err := CommitsCount ( DefaultContext ,
CommitsCountOptions {
RepoPath : bareRepo1Path ,
Revision : [ ] string { "f004f41359117d319dedd0eaab8c5259ee2263da839dcba33637997458627fdc" } ,
} )
assert . NoError ( t , err )
assert . Equal ( t , int64 ( 3 ) , commitsCount )
}
func TestCommitsCountWithoutBaseSha256 ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare_sha256" )
commitsCount , err := CommitsCount ( DefaultContext ,
CommitsCountOptions {
RepoPath : bareRepo1Path ,
Not : "main" ,
Revision : [ ] string { "branch1" } ,
} )
assert . NoError ( t , err )
assert . Equal ( t , int64 ( 2 ) , commitsCount )
}
func TestGetFullCommitIDSha256 ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare_sha256" )
id , err := GetFullCommitID ( DefaultContext , bareRepo1Path , "f004f4" )
assert . NoError ( t , err )
assert . Equal ( t , "f004f41359117d319dedd0eaab8c5259ee2263da839dcba33637997458627fdc" , id )
}
func TestGetFullCommitIDErrorSha256 ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare_sha256" )
id , err := GetFullCommitID ( DefaultContext , bareRepo1Path , "unknown" )
assert . Empty ( t , id )
if assert . Error ( t , err ) {
assert . EqualError ( t , err , "object does not exist [id: unknown, rel_path: ]" )
}
}
func TestCommitFromReaderSha256 ( t * testing . T ) {
commitString := ` 9433 b2a62b964c17a4485ae180f45f595d3e69d31b786087775e28c6b6399df0 commit 1114
tree e7f9e96dd79c09b078cac8b303a7d3b9d65ff9b734e86060a4d20409fd379f9e
parent 26e9 ccc29fad747e9c5d9f4c9ddeb7eff61cc45ef6a8dc258cbeb181afc055e8
author Adam Majer < amajer @ suse . de > 1698676906 + 0100
committer Adam Majer < amajer @ suse . de > 1698676906 + 0100
gpgsig - sha256 -- -- - BEGIN PGP SIGNATURE -- -- -
` + " " + `
iQIrBAABCgAtFiEES + fB08xlgTrzSdQvhkUIsBsmec8FAmU / wKoPHGFtYWplckBz
dXNlLmRlAAoJEIZFCLAbJnnP4s4PQIJATa ++ WPzR6 / H4etT7bsOGoMyguEJYyWOd
aTybplzT7QAL7h2to0QszGabtzMJPIA39xSFZNYNN30voK5YyyYibXluPKgjemfK
WNXwF + gkwgZI38gSvKf + vlqI + EYyIFe19wOhiju0m8SIlB5NEPiWHa17q2mqmqqx
1 FWa2JdqLPYjAtSLFXeSZegrY5V1FxdemyMUONkg8YO9OSIMZiE0GsnnOXQ3xcT4
JTCnmlUxIKw689UiEY80JopUIq + Wl7 + qq9507IYYSUCyB6JazL42AKMzVCbD + qBP
oOzh / hafYgk9H9qCQXaLbmvs17zXRpicig1bAzqgAy1FDelvpERyRTydEajSLIG6
U1cRCkgXCZ0NfsYNPPmBa8b3 + rnstypXYTbyMwTln7FfUAaGo6o9JYiPMkzxlmsy
zfp / tcaY8 + LlBL9aOJjtv + a0p + HrpCGd6CCa4ARfphTLq8QRSSh8uzlB9N + 6 HnRI
VAEUo6ecdDxSpyt2naeg9pKus / BRi7P6g4B1hkk / zZstUX / QP4IQuAJbXjkvsC + X
HKRr3NlRM / DygzTyj0gN74uoa0goCIbyAQhiT42nm0cuhM7uN / W0ayrlZjGF1cbR
8 NCJUL2Nwj0ywKIavC99Ipkb8AsFwpVT6U6effs6
= xybZ
-- -- - END PGP SIGNATURE -- -- -
signed commit `
sha := & Sha256Hash {
0x94 , 0x33 , 0xb2 , 0xa6 , 0x2b , 0x96 , 0x4c , 0x17 , 0xa4 , 0x48 , 0x5a , 0xe1 , 0x80 , 0xf4 , 0x5f , 0x59 ,
0x5d , 0x3e , 0x69 , 0xd3 , 0x1b , 0x78 , 0x60 , 0x87 , 0x77 , 0x5e , 0x28 , 0xc6 , 0xb6 , 0x39 , 0x9d , 0xf0 ,
}
gitRepo , err := openRepositoryWithDefaultContext ( filepath . Join ( testReposDir , "repo1_bare_sha256" ) )
assert . NoError ( t , err )
assert . NotNil ( t , gitRepo )
defer gitRepo . Close ( )
commitFromReader , err := CommitFromReader ( gitRepo , sha , strings . NewReader ( commitString ) )
assert . NoError ( t , err )
if ! assert . NotNil ( t , commitFromReader ) {
return
}
assert . EqualValues ( t , sha , commitFromReader . ID )
assert . EqualValues ( t , ` -- -- - BEGIN PGP SIGNATURE -- -- -
iQIrBAABCgAtFiEES + fB08xlgTrzSdQvhkUIsBsmec8FAmU / wKoPHGFtYWplckBz
dXNlLmRlAAoJEIZFCLAbJnnP4s4PQIJATa ++ WPzR6 / H4etT7bsOGoMyguEJYyWOd
aTybplzT7QAL7h2to0QszGabtzMJPIA39xSFZNYNN30voK5YyyYibXluPKgjemfK
WNXwF + gkwgZI38gSvKf + vlqI + EYyIFe19wOhiju0m8SIlB5NEPiWHa17q2mqmqqx
1 FWa2JdqLPYjAtSLFXeSZegrY5V1FxdemyMUONkg8YO9OSIMZiE0GsnnOXQ3xcT4
JTCnmlUxIKw689UiEY80JopUIq + Wl7 + qq9507IYYSUCyB6JazL42AKMzVCbD + qBP
oOzh / hafYgk9H9qCQXaLbmvs17zXRpicig1bAzqgAy1FDelvpERyRTydEajSLIG6
U1cRCkgXCZ0NfsYNPPmBa8b3 + rnstypXYTbyMwTln7FfUAaGo6o9JYiPMkzxlmsy
zfp / tcaY8 + LlBL9aOJjtv + a0p + HrpCGd6CCa4ARfphTLq8QRSSh8uzlB9N + 6 HnRI
VAEUo6ecdDxSpyt2naeg9pKus / BRi7P6g4B1hkk / zZstUX / QP4IQuAJbXjkvsC + X
HKRr3NlRM / DygzTyj0gN74uoa0goCIbyAQhiT42nm0cuhM7uN / W0ayrlZjGF1cbR
8 NCJUL2Nwj0ywKIavC99Ipkb8AsFwpVT6U6effs6
= xybZ
-- -- - END PGP SIGNATURE -- -- -
` , commitFromReader . Signature . Signature )
assert . EqualValues ( t , ` tree e7f9e96dd79c09b078cac8b303a7d3b9d65ff9b734e86060a4d20409fd379f9e
parent 26e9 ccc29fad747e9c5d9f4c9ddeb7eff61cc45ef6a8dc258cbeb181afc055e8
author Adam Majer < amajer @ suse . de > 1698676906 + 0100
committer Adam Majer < amajer @ suse . de > 1698676906 + 0100
signed commit ` , commitFromReader . Signature . Payload )
assert . EqualValues ( t , "Adam Majer <amajer@suse.de>" , commitFromReader . Author . String ( ) )
commitFromReader2 , err := CommitFromReader ( gitRepo , sha , strings . NewReader ( commitString + "\n\n" ) )
assert . NoError ( t , err )
commitFromReader . CommitMessage += "\n\n"
commitFromReader . Signature . Payload += "\n\n"
assert . EqualValues ( t , commitFromReader , commitFromReader2 )
}
func TestHasPreviousCommitSha256 ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo1_bare_sha256" )
repo , err := openRepositoryWithDefaultContext ( bareRepo1Path )
assert . NoError ( t , err )
defer repo . Close ( )
commit , err := repo . GetCommit ( "f004f41359117d319dedd0eaab8c5259ee2263da839dcba33637997458627fdc" )
assert . NoError ( t , err )
2024-03-12 07:21:27 +03:00
objectFormat , err := repo . GetObjectFormat ( )
assert . NoError ( t , err )
2024-01-19 19:05:02 +03:00
parentSHA := MustIDFromString ( "b0ec7af4547047f12d5093e37ef8f1b3b5415ed8ee17894d43a34d7d34212e9c" )
notParentSHA := MustIDFromString ( "42e334efd04cd36eea6da0599913333c26116e1a537ca76e5b6e4af4dda00236" )
2024-03-12 07:21:27 +03:00
assert . Equal ( t , objectFormat , parentSHA . Type ( ) )
assert . Equal ( t , objectFormat . Name ( ) , "sha256" )
2024-01-19 19:05:02 +03:00
haz , err := commit . HasPreviousCommit ( parentSHA )
assert . NoError ( t , err )
assert . True ( t , haz )
hazNot , err := commit . HasPreviousCommit ( notParentSHA )
assert . NoError ( t , err )
assert . False ( t , hazNot )
selfNot , err := commit . HasPreviousCommit ( commit . ID )
assert . NoError ( t , err )
assert . False ( t , selfNot )
}
func TestGetCommitFileStatusMergesSha256 ( t * testing . T ) {
bareRepo1Path := filepath . Join ( testReposDir , "repo6_merge_sha256" )
commitFileStatus , err := GetCommitFileStatus ( DefaultContext , bareRepo1Path , "d2e5609f630dd8db500f5298d05d16def282412e3e66ed68cc7d0833b29129a1" )
assert . NoError ( t , err )
expected := CommitFileStatus {
[ ] string {
"add_file.txt" ,
} ,
[ ] string { } ,
[ ] string {
"to_modify.txt" ,
} ,
}
assert . Equal ( t , expected . Added , commitFileStatus . Added )
assert . Equal ( t , expected . Removed , commitFileStatus . Removed )
assert . Equal ( t , expected . Modified , commitFileStatus . Modified )
expected = CommitFileStatus {
[ ] string { } ,
[ ] string {
"to_remove.txt" ,
} ,
[ ] string { } ,
}
commitFileStatus , err = GetCommitFileStatus ( DefaultContext , bareRepo1Path , "da1ded40dc8e5b7c564171f4bf2fc8370487decfb1cb6a99ef28f3ed73d09172" )
assert . NoError ( t , err )
assert . Equal ( t , expected . Added , commitFileStatus . Added )
assert . Equal ( t , expected . Removed , commitFileStatus . Removed )
assert . Equal ( t , expected . Modified , commitFileStatus . Modified )
}