From d85a7384149f7246daae3bc52fb908450f55d552 Mon Sep 17 00:00:00 2001 From: Sebastian Zagrodzki Date: Thu, 27 Apr 2017 03:25:36 +0200 Subject: [PATCH] a new fakelibusb will overwrite libusb and restore it automatically on done() --- usb/fakelibusb_test.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/usb/fakelibusb_test.go b/usb/fakelibusb_test.go index 9d5d959..c195c48 100644 --- a/usb/fakelibusb_test.go +++ b/usb/fakelibusb_test.go @@ -292,7 +292,8 @@ func (f *fakeLibusb) waitForSubmitted() *fakeTransfer { return <-f.submitted } -func newFakeLibusb() *fakeLibusb { +func newFakeLibusb() (*fakeLibusb, func() error) { + origLibusb := libusb fl := &fakeLibusb{ fakeDevices: make(map[*libusbDevice]*fakeDevice), ts: make(map[*libusbTransfer]*fakeTransfer), @@ -310,5 +311,15 @@ func newFakeLibusb() *fakeLibusb { alt: 0, } } - return fl + libusb = fl + return fl, func() error { + defer func() { libusb = origLibusb }() + if got := len(fl.ts); got > 0 { + for t := range fl.ts { + fl.free(t) + } + return fmt.Errorf("fakeLibusb has %d remaining transfers that should have been freed", got) + } + return nil + } }