Tests
1. LIBUSB_ERROR_BUSY - open the same device twice
2. LIBUSB_ERROR_NO_DEVICE - get list of devices, pause, unplug device, attempt to open the unplugged device.
3. LIBUSB_ERROR_ACCESS - get list of devices, pause, alter permissions on the device node, attempt to open a device.
4. LIBUSB_ERROR_INVALID_PARAM - pass a null device handle.
5. LIBUSB_ERROR_NO_MEM - get list of devices, pause, simulate heap full, attempt to open a device.
A program covering the above tests - included in Bugzilla - has been run against actual hardware to verify correctness.
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291774
Update: a set of twenty one unit tests added. These can be run from kyua and do not require physical hardware.
usb_opener_atf/build $ kyua test
usb_opener:test_case_libusb20_access -> passed [0.002s]
usb_opener:test_case_libusb20_busy -> passed [0.002s]
usb_opener:test_case_libusb20_invalid -> passed [0.002s]
usb_opener:test_case_libusb20_no_device -> passed [0.002s]
usb_opener:test_case_libusb20_no_mem -> passed [0.002s]
usb_opener:test_case_libusb20_other -> passed [0.002s]
usb_opener:test_case_libusb20_success -> passed [0.002s]
usb_opener:test_case_libusb_access -> passed [0.002s]
usb_opener:test_case_libusb_busy -> passed [0.002s]
usb_opener:test_case_libusb_invalid -> passed [0.002s]
usb_opener:test_case_libusb_no_device -> passed [0.002s]
usb_opener:test_case_libusb_no_mem -> passed [0.002s]
usb_opener:test_case_libusb_other -> passed [0.002s]
usb_opener:test_case_libusb_success -> passed [0.003s]
usb_opener:test_case_libusb_with_vid_pid_access -> passed [0.002s]
usb_opener:test_case_libusb_with_vid_pid_busy -> passed [0.002s]
usb_opener:test_case_libusb_with_vid_pid_invalid -> passed [0.002s]
usb_opener:test_case_libusb_with_vid_pid_no_device -> passed [0.002s]
usb_opener:test_case_libusb_with_vid_pid_no_mem -> passed [0.002s]
usb_opener:test_case_libusb_with_vid_pid_other -> passed [0.002s]
usb_opener:test_case_libusb_with_vid_pid_success -> passed [0.002s]
Results file id is usb_opener_atf_build.20251220-103547-089277
Results saved to ~/.kyua/store/results.usb_opener_atf_build.20251220-103547-089277.db
21/21 passed (0 broken, 0 failed, 0 skipped)