package kmod

import (
	"errors"
	"os"
	"testing"
)

func TestManagerIntegration(t *testing.T) {
	if os.Getenv("IN_KTEST") != "true" {
		t.Skip("Not in ktest")
	}
	t.Skip("Only works from the final CL in the stack as it has a dep on the new kernel config")
	mgr, err := NewManagerFromPath("/lib/modules")
	if err != nil {
		t.Fatal(err)
	}
	t.Run("LoadExampleModule", func(t *testing.T) {
		if err := mgr.LoadModule("r8169"); err != nil {
			t.Error(err)
		}
		if _, err := os.Stat("/sys/module/r8169"); err != nil {
			t.Error("module load returned success, but module not in sysfs")
		}
	})
	t.Run("LoadNonexistentModule", func(t *testing.T) {
		err := mgr.LoadModule("definitelynomodule")
		var notFoundErr *ErrNotFound
		if !errors.As(err, &notFoundErr) {
			t.Errorf("expected ErrNotFound, got %v", err)
		}
	})
	t.Run("LoadModuleTwice", func(t *testing.T) {
		if err := mgr.LoadModule("r8169"); err != nil {
			t.Error(err)
		}
	})
	// TODO(lorenz): Should test loading dependencies here, but we currently
	// have none in the kernel config and I'm not about to build another kernel
	// just for this.
	t.Run("LoadDeviceModule", func(t *testing.T) {
		if err := mgr.LoadModulesForDevice("pci:v00008086d00001591sv00001043sd000085F0bc02sc00i00"); err != nil {
			t.Error(err)
		}
		if _, err := os.Stat("/sys/module/ice"); err != nil {
			t.Error("module load returned success, but module not in sysfs")
		}
	})
}
