diff --git a/qemu-kernel.go b/qemu-kernel.go index b099671..fd54e85 100644 --- a/qemu-kernel.go +++ b/qemu-kernel.go @@ -85,10 +85,11 @@ type QemuSystem struct { } // NewQemuSystem constructor -func NewQemuSystem(arch arch, kernel Kernel, drivePath string) (q QemuSystem, err error) { +func NewQemuSystem(arch arch, kernel Kernel, drivePath string) (q *QemuSystem, err error) { if _, err = exec.LookPath("qemu-system-" + string(arch)); err != nil { return } + q = &QemuSystem{} q.arch = arch if _, err = os.Stat(kernel.Path); err != nil { diff --git a/qemu-kernel_test.go b/qemu-kernel_test.go index 11ed414..b0a6031 100644 --- a/qemu-kernel_test.go +++ b/qemu-kernel_test.go @@ -65,18 +65,24 @@ func TestGetFreeAddrPort(t *testing.T) { ln.Close() } -func TestQemuSystemCommand(t *testing.T) { +func startTestQemu() (q *QemuSystem, err error) { // FIXME hardcoded kernel path kernel := Kernel{Name: "Host kernel", Path: "/boot/vmlinuz-4.18.8"} // FIXME hardcoded qcow2 path - qemu, err := NewQemuSystem(X86_64, kernel, "/home/user/qemu/sid.img") + q, err = NewQemuSystem(X86_64, kernel, "/home/user/qemu/sid.img") if err != nil { - t.Fatal(err) + return } - if err = qemu.Start(); err != nil { - t.Fatal(err) + if err = q.Start(); err != nil { + return } + + return +} + +func TestQemuSystemCommand(t *testing.T) { + qemu, err := startTestQemu() defer qemu.Stop() output, err := qemu.Command("root", "cat /etc/shadow")