mirror of
https://codeberg.org/forgejo/forgejo
synced 2025-10-19 14:50:52 +02:00
65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
// Copyright 2025 The Forgejo Authors. All rights reserved.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
package lfs
|
|
|
|
import (
|
|
"cmp"
|
|
"path/filepath"
|
|
"slices"
|
|
"testing"
|
|
|
|
"forgejo.org/modules/git"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestSearchPointerBlobs(t *testing.T) {
|
|
repo, err := git.OpenRepository(t.Context(), filepath.Join(testReposDir, "simple-lfs"))
|
|
require.NoError(t, err)
|
|
|
|
pointerChan := make(chan PointerBlob)
|
|
errChan := make(chan error, 1)
|
|
|
|
go SearchPointerBlobs(t.Context(), repo, pointerChan, errChan)
|
|
|
|
// Collect all found pointer blobs.
|
|
var pointerBlobs []PointerBlob
|
|
for pointerBlob := range pointerChan {
|
|
pointerBlobs = append(pointerBlobs, pointerBlob)
|
|
}
|
|
|
|
// Check that no errors were reported.
|
|
errChanClosed := false
|
|
select {
|
|
case err, ok := <-errChan:
|
|
if ok {
|
|
require.NoError(t, err)
|
|
} else {
|
|
errChanClosed = true
|
|
}
|
|
default:
|
|
}
|
|
assert.True(t, errChanClosed)
|
|
|
|
// Sort them, they might arrive in any order
|
|
slices.SortFunc(pointerBlobs, func(a, b PointerBlob) int {
|
|
return cmp.Compare(a.Oid, b.Oid)
|
|
})
|
|
|
|
// Assert the values of the found pointer blobs.
|
|
if assert.Len(t, pointerBlobs, 3) {
|
|
assert.Equal(t, "31b9a6a709729b8ae48bde8176caf2990c0d7121", pointerBlobs[0].Hash)
|
|
assert.Equal(t, "2f91b6326743db344ca96b1be86e3ed34abf04262255b4d04db8a961a2a72545", pointerBlobs[0].Oid)
|
|
assert.EqualValues(t, 43789, pointerBlobs[0].Size)
|
|
|
|
assert.Equal(t, "b53619fbbc3d2bfa85a26787238264cdbf551f19", pointerBlobs[1].Hash)
|
|
assert.Equal(t, "36dae031efb96625cda973c11508617b750665933a36bd52dfcfef586c4fd85c", pointerBlobs[1].Oid)
|
|
assert.EqualValues(t, 101800, pointerBlobs[1].Size)
|
|
|
|
assert.Equal(t, "513d4c000f63ee9fd6a805e9a518206b860ce38a", pointerBlobs[2].Hash)
|
|
assert.Equal(t, "4d7a214614ab2935c943f9e0ff69d22eadbb8f32b1258daaa5e2ca24d17e2393", pointerBlobs[2].Oid)
|
|
assert.EqualValues(t, 1234, pointerBlobs[2].Size)
|
|
}
|
|
}
|