diff --git a/internal/dnfjson/dnfjson_test.go b/internal/dnfjson/dnfjson_test.go index bdd3b76d0..b8f821204 100644 --- a/internal/dnfjson/dnfjson_test.go +++ b/internal/dnfjson/dnfjson_test.go @@ -1,7 +1,10 @@ package dnfjson import ( + "flag" "fmt" + "os" + "os/exec" "testing" "github.com/osbuild/osbuild-composer/internal/mocks/rpmrepo" @@ -9,7 +12,26 @@ import ( "github.com/stretchr/testify/assert" ) +var forceDNF = flag.Bool("force-dnf", false, "force dnf testing, making them fail instead of skip if dnf isn't installed") + +func dnfInstalled() bool { + cmd := exec.Command("python3", "-c", "import dnf") + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + fmt.Fprintf(os.Stderr, "failed to import dnf: %s\n", err.Error()) + return false + } + return true +} + func TestDepsolver(t *testing.T) { + if !*forceDNF { + // dnf tests aren't forced: skip them if the dnf sniff check fails + if !dnfInstalled() { + t.Skip() + } + } + s := rpmrepo.NewTestServer() defer s.Close()