mirror of
https://github.com/go-gitea/gitea.git
synced 2024-09-01 14:56:30 +00:00
197 lines
4.2 KiB
Go
197 lines
4.2 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package arch
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"io"
|
|
"os"
|
|
"testing"
|
|
"testing/fstest"
|
|
"time"
|
|
|
|
pkg_module "code.gitea.io/gitea/modules/packages"
|
|
|
|
"github.com/mholt/archiver/v3"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
const pkginfo = `# Generated by makepkg 6.0.2
|
|
# using fakeroot version 1.31
|
|
pkgname = zstd
|
|
pkgbase = zstd
|
|
pkgver = 1.5.5-1
|
|
pkgdesc = Zstandard - Fast real-time compression algorithm
|
|
url = https://facebook.github.io/zstd/
|
|
builddate = 1681646714
|
|
packager = Jelle van der Waa <jelle@archlinux.org>
|
|
size = 1500453
|
|
arch = x86_64
|
|
license = BSD
|
|
license = GPL2
|
|
provides = libzstd.so=1-64
|
|
depend = glibc
|
|
depend = gcc-libs
|
|
depend = zlib
|
|
depend = xz
|
|
depend = lz4
|
|
makedepend = cmake
|
|
makedepend = gtest
|
|
makedepend = ninja
|
|
`
|
|
|
|
const pkgdesc = `%FILENAME%
|
|
zstd-1.5.5-1-x86_64.pkg.tar.zst
|
|
|
|
%NAME%
|
|
zstd
|
|
|
|
%BASE%
|
|
zstd
|
|
|
|
%VERSION%
|
|
1.5.5-1
|
|
|
|
%DESC%
|
|
Zstandard - Fast real-time compression algorithm
|
|
|
|
%CSIZE%
|
|
401
|
|
|
|
%ISIZE%
|
|
1500453
|
|
|
|
%MD5SUM%
|
|
5016660ef3d9aa148a7b72a08d3df1b2
|
|
|
|
%SHA256SUM%
|
|
9fa4ede47e35f5971e4f26ecadcbfb66ab79f1d638317ac80334a3362dedbabd
|
|
|
|
%URL%
|
|
https://facebook.github.io/zstd/
|
|
|
|
%LICENSE%
|
|
BSD
|
|
GPL2
|
|
|
|
%ARCH%
|
|
x86_64
|
|
|
|
%BUILDDATE%
|
|
1681646714
|
|
|
|
%PACKAGER%
|
|
Jelle van der Waa <jelle@archlinux.org>
|
|
|
|
%PROVIDES%
|
|
libzstd.so=1-64
|
|
|
|
%DEPENDS%
|
|
glibc
|
|
gcc-libs
|
|
zlib
|
|
xz
|
|
lz4
|
|
|
|
%MAKEDEPENDS%
|
|
cmake
|
|
gtest
|
|
ninja
|
|
|
|
`
|
|
|
|
const dbarchive = "H4sIAAAAAAAA/0rLzEnVS60oYaAhMDAwMDA3NwfTBgYG6LSBgYEpEtuAwcDQwMzUgEHBgJaOgoHS4pLEIgYDiu1C99wQASmlubmVA+2IUTAKRsEoGAV0B4AAAAD//2VF3KIACAAA"
|
|
|
|
func TestMetadata(t *testing.T) {
|
|
fs := fstest.MapFS{
|
|
"pkginfo": &fstest.MapFile{
|
|
Data: []byte(pkginfo),
|
|
Mode: os.ModePerm,
|
|
ModTime: time.Now(),
|
|
},
|
|
}
|
|
|
|
info, err := fs.Stat("pkginfo")
|
|
assert.NoError(t, err)
|
|
|
|
file, err := fs.Open("pkginfo")
|
|
assert.NoError(t, err)
|
|
|
|
buf, err := pkg_module.NewHashedBuffer()
|
|
assert.NoError(t, err)
|
|
|
|
archive := archiver.NewTarZstd()
|
|
archive.Create(buf)
|
|
|
|
n, err := archiver.NameInArchive(info, ".PKGINFO", ".PKGINFO")
|
|
assert.NoError(t, err)
|
|
|
|
err = archive.Write(archiver.File{
|
|
FileInfo: archiver.FileInfo{
|
|
FileInfo: info,
|
|
CustomName: n,
|
|
},
|
|
ReadCloser: file,
|
|
})
|
|
file.Close()
|
|
archive.Close()
|
|
assert.NoError(t, err)
|
|
|
|
md, err := ParseMetadata("zstd-1.5.5-1-x86_64.pkg.tar.zst", "archlinux", buf)
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, md.Name, "zstd")
|
|
assert.Equal(t, md.Base, "zstd")
|
|
assert.Equal(t, md.Version, "1.5.5-1")
|
|
assert.Equal(t, md.Description, "Zstandard - Fast real-time compression algorithm")
|
|
assert.Equal(t, md.ProjectURL, "https://facebook.github.io/zstd/")
|
|
assert.Equal(t, md.BuildDate, int64(1681646714))
|
|
assert.Equal(t, md.Packager, "Jelle van der Waa <jelle@archlinux.org>")
|
|
assert.Equal(t, md.InstalledSize, int64(1500453))
|
|
assert.Equal(t, md.Arch, []string{"x86_64"})
|
|
assert.Equal(t, md.License, []string{"BSD", "GPL2"})
|
|
assert.Equal(t, md.Provides, []string{"libzstd.so=1-64"})
|
|
assert.Equal(t, md.Depends, []string{"glibc", "gcc-libs", "zlib", "xz", "lz4"})
|
|
assert.Equal(t, md.MakeDepends, []string{"cmake", "gtest", "ninja"})
|
|
}
|
|
|
|
func TestDescString(t *testing.T) {
|
|
md := &DbDesc{
|
|
Filename: "zstd-1.5.5-1-x86_64.pkg.tar.zst",
|
|
Name: "zstd",
|
|
Base: "zstd",
|
|
Version: "1.5.5-1",
|
|
Description: "Zstandard - Fast real-time compression algorithm",
|
|
CompressedSize: 401,
|
|
InstalledSize: 1500453,
|
|
MD5: "5016660ef3d9aa148a7b72a08d3df1b2",
|
|
SHA256: "9fa4ede47e35f5971e4f26ecadcbfb66ab79f1d638317ac80334a3362dedbabd",
|
|
ProjectURL: "https://facebook.github.io/zstd/",
|
|
BuildDate: 1681646714,
|
|
Packager: "Jelle van der Waa <jelle@archlinux.org>",
|
|
Provides: []string{"libzstd.so=1-64"},
|
|
License: []string{"BSD", "GPL2"},
|
|
Arch: []string{"x86_64"},
|
|
Depends: []string{"glibc", "gcc-libs", "zlib", "xz", "lz4"},
|
|
MakeDepends: []string{"cmake", "gtest", "ninja"},
|
|
}
|
|
desc := md.String()
|
|
assert.Equal(t, pkgdesc, desc)
|
|
}
|
|
|
|
func TestDatabase(t *testing.T) {
|
|
db, err := CreatePacmanDb(map[string][]byte{
|
|
"file.ext": []byte("dummy"),
|
|
})
|
|
assert.NoError(t, err)
|
|
|
|
actual, err := io.ReadAll(db)
|
|
assert.NoError(t, err)
|
|
|
|
expected, err := base64.RawStdEncoding.DecodeString(dbarchive)
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, expected, actual)
|
|
}
|