55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
package releasekit
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"encoding/hex"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/ReleaseKit/internal/gitea"
|
|
)
|
|
|
|
func TestDeclaredBuildAssetsGenerateManifestFromBuildResult(t *testing.T) {
|
|
output := t.TempDir()
|
|
first := []byte("first artifact")
|
|
second := []byte("second artifact")
|
|
firstPath := filepath.Join(output, "zeta.bin")
|
|
secondPath := filepath.Join(output, "alpha.bin")
|
|
if err := os.WriteFile(firstPath, first, 0o600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := os.WriteFile(secondPath, second, 0o600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
result, err := declaredBuildAssets(BuildResult{Artifacts: []BuildArtifact{
|
|
{Path: firstPath, Filename: "zeta.bin", SHA256: assetDigest(first)},
|
|
{Path: secondPath, Filename: "alpha.bin", SHA256: assetDigest(second)},
|
|
}})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(result) != 3 || result[0].Filename != "zeta.bin" || result[1].Filename != "alpha.bin" || result[2].Filename != gitea.ManifestFilename {
|
|
t.Fatalf("assets = %#v", result)
|
|
}
|
|
want := assetDigest(second) + " alpha.bin\n" + assetDigest(first) + " zeta.bin\n"
|
|
if string(result[2].Content) != want {
|
|
t.Fatalf("manifest = %q, want %q", result[2].Content, want)
|
|
}
|
|
if result[0].Size != int64(len(first)) || result[1].Size != int64(len(second)) {
|
|
t.Fatalf("sizes = %d, %d", result[0].Size, result[1].Size)
|
|
}
|
|
}
|
|
|
|
func TestDeclaredBuildAssetsKeepsSourceOnlyBuildManifestFree(t *testing.T) {
|
|
assets, err := declaredBuildAssets(BuildResult{})
|
|
if err != nil || len(assets) != 0 {
|
|
t.Fatalf("assets = %#v, error = %v", assets, err)
|
|
}
|
|
}
|
|
|
|
func assetDigest(content []byte) string {
|
|
sum := sha256.Sum256(content)
|
|
return hex.EncodeToString(sum[:])
|
|
}
|