debian-forge-composer/cmd/osbuild-dnf-json-tests/main.go
Martin Sehnoutka f1b5ee8859 rpmmd: rename fetchpackagelist to fetchmetadata
the name was misleading because the function could do more than just
download package list. In PushComposeRequest it is also used to fetch
checksums for the repositories, therefore I decided to rename it to
reflect this usage.
2020-02-20 13:04:28 +01:00

71 lines
1.5 KiB
Go

// This package contains tests related to dnf-json and rpmmd package.
package main
import (
"fmt"
"github.com/osbuild/osbuild-composer/internal/rpmmd"
"io/ioutil"
"log"
"os"
"os/exec"
"path"
)
func main() {
// Tests that the package wrapping dnf-json works as expected
dir, err := setUpTemporaryRepository()
defer func(dir string) {
err := tearDownTemporaryRepository(dir)
if err != nil {
log.Print("Warning: failed to clean up temporary repository.")
}
}(dir)
if err != nil {
log.Panic("Failed to set up temporary repository:", err)
}
TestFetchChecksum(false, dir)
}
func setUpTemporaryRepository() (string, error) {
dir, err := ioutil.TempDir("/tmp", "osbuild-composer-test-")
if err != nil {
return "", err
}
cmd := exec.Command("createrepo_c", path.Join(dir))
err = cmd.Start()
if err != nil {
return "", err
}
err = cmd.Wait()
if err != nil {
return "", err
}
return dir, nil
}
func tearDownTemporaryRepository(dir string) error {
return os.RemoveAll(dir)
}
func TestFetchChecksum(quiet bool, dir string) {
repoCfg := rpmmd.RepoConfig{
Id: "repo",
Name: "repo",
BaseURL: fmt.Sprintf("file://%s", dir),
IgnoreSSL: true,
}
if !quiet {
log.Println("Running TestFetchChecksum on:", dir)
}
rpmMetadata := rpmmd.NewRPMMD()
_, c, err := rpmMetadata.FetchMetadata([]rpmmd.RepoConfig{repoCfg}, "platform:f31")
if err != nil {
log.Panic("Failed to fetch checksum:", err)
}
if c["repo"] == "" {
log.Panic("The checksum is empty")
}
if !quiet {
log.Println("TestFetchChecksum: SUCCESS")
}
}