65 lines · 1.9 KB · Go
RawDownload
// 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)	}}