We want to test API methods which calls dnf. Unfortunately, calling dnf is expensive operation - it requires network access and downloading a lot of (meta)data. This commit changes the rpmmd implementation so that it can be mocked.
33 lines
721 B
Go
33 lines
721 B
Go
package rpmmd_mock
|
|
|
|
import "github.com/osbuild/osbuild-composer/internal/rpmmd"
|
|
|
|
type fetchPackageList struct {
|
|
ret rpmmd.PackageList
|
|
err error
|
|
}
|
|
type depsolve struct {
|
|
ret []rpmmd.PackageSpec
|
|
err error
|
|
}
|
|
|
|
type Fixture struct {
|
|
fetchPackageList
|
|
depsolve
|
|
}
|
|
|
|
type rpmmdMock struct {
|
|
Fixture Fixture
|
|
}
|
|
|
|
func NewRPMMDMock(fixture Fixture) rpmmd.RPMMD {
|
|
return &rpmmdMock{Fixture: fixture}
|
|
}
|
|
|
|
func (r *rpmmdMock) FetchPackageList(repos []rpmmd.RepoConfig) (rpmmd.PackageList, error) {
|
|
return r.Fixture.fetchPackageList.ret, r.Fixture.fetchPackageList.err
|
|
}
|
|
|
|
func (r *rpmmdMock) Depsolve(specs []string, repos []rpmmd.RepoConfig) ([]rpmmd.PackageSpec, error) {
|
|
return r.Fixture.depsolve.ret, r.Fixture.depsolve.err
|
|
}
|