Mixing the way to build a distribution with where to get the source packages from is wrong: it breaks pre-release repos, local mirrors, and other use cases. To accommodate those, we introduced `/etc/osbuild-composer/repositories`. However, that doesn't work for the RCM API, which receives repository URLs to use from outside requests. This API has been wrongly using the `additionalRepos` parameter to inject those repos. That's broken, because the resulting manifests contained both the installed repos and the repos from the request. To fix this, stop exposing repositories from the distros, but require passing them on every call to `Manifest()`. This makes `additionalRepos` redundant. Fixes #341
118 lines
2.2 KiB
Go
118 lines
2.2 KiB
Go
package rhel82_test
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/osbuild/osbuild-composer/internal/distro/rhel82"
|
|
)
|
|
|
|
func TestListOutputFormats(t *testing.T) {
|
|
want := []string{
|
|
"ami",
|
|
"ext4-filesystem",
|
|
"openstack",
|
|
"partitioned-disk",
|
|
"qcow2",
|
|
"tar",
|
|
"vhd",
|
|
"vmdk",
|
|
}
|
|
|
|
el82, err := rhel82.New()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if got := el82.ListOutputFormats(); !reflect.DeepEqual(got, want) {
|
|
t.Errorf("ListOutputFormats() = %v, want %v", got, want)
|
|
}
|
|
}
|
|
|
|
func TestFilenameFromType(t *testing.T) {
|
|
type args struct {
|
|
outputFormat string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want string
|
|
want1 string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "ami",
|
|
args: args{"ami"},
|
|
want: "image.raw.xz",
|
|
want1: "application/octet-stream",
|
|
},
|
|
{
|
|
name: "ext4",
|
|
args: args{"ext4-filesystem"},
|
|
want: "filesystem.img",
|
|
want1: "application/octet-stream",
|
|
},
|
|
{
|
|
name: "openstack",
|
|
args: args{"openstack"},
|
|
want: "disk.qcow2",
|
|
want1: "application/x-qemu-disk",
|
|
},
|
|
{
|
|
name: "partitioned-disk",
|
|
args: args{"partitioned-disk"},
|
|
want: "disk.img",
|
|
want1: "application/octet-stream",
|
|
},
|
|
{
|
|
name: "qcow2",
|
|
args: args{"qcow2"},
|
|
want: "disk.qcow2",
|
|
want1: "application/x-qemu-disk",
|
|
},
|
|
{
|
|
name: "tar",
|
|
args: args{"tar"},
|
|
want: "root.tar.xz",
|
|
want1: "application/x-tar",
|
|
},
|
|
{
|
|
name: "vhd",
|
|
args: args{"vhd"},
|
|
want: "disk.vhd",
|
|
want1: "application/x-vhd",
|
|
},
|
|
{
|
|
name: "vmdk",
|
|
args: args{"vmdk"},
|
|
want: "disk.vmdk",
|
|
want1: "application/x-vmdk",
|
|
},
|
|
{
|
|
name: "invalid-output-type",
|
|
args: args{"foobar"},
|
|
wantErr: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
el82, err := rhel82.New()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
got, got1, err := el82.FilenameFromType(tt.args.outputFormat)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("FilenameFromType() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
if !tt.wantErr {
|
|
if got != tt.want {
|
|
t.Errorf("FilenameFromType() got = %v, want %v", got, tt.want)
|
|
}
|
|
if got1 != tt.want1 {
|
|
t.Errorf("FilenameFromType() got1 = %v, want %v", got1, tt.want1)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|