Fix USB traceback during testing when wrong size

In the pyusb_basic host test check the length of control transfers
before comparing contents for equality.
pull/9768/head
Russ Butler 2018-10-30 15:36:39 -05:00
parent 130927068c
commit cb6a6dbd20
1 changed files with 6 additions and 11 deletions

View File

@ -24,6 +24,7 @@ import inspect
from threading import Thread, Event, Timer from threading import Thread, Event, Timer
import array import array
import random import random
import os
import usb.core import usb.core
from usb.util import build_request_type from usb.util import build_request_type
@ -841,12 +842,8 @@ def control_data_test(dev, sizes_list, log):
request = VENDOR_TEST_CTRL_OUT_SIZES request = VENDOR_TEST_CTRL_OUT_SIZES
value = i # Size of data the device should actually read value = i # Size of data the device should actually read
index = 0 # Unused - set for debugging only index = 0 # Unused - set for debugging only
data = bytearray(i) # Dummy data data = bytearray(os.urandom(i)) # Dummy data
if i == 1:
data[0] = count
else:
data[0] = count - 1
data[i - 1] = count + 1
try: try:
dev.ctrl_transfer(request_type, request, value, index, data, 5000) dev.ctrl_transfer(request_type, request, value, index, data, 5000)
except usb.core.USBError: except usb.core.USBError:
@ -860,11 +857,9 @@ def control_data_test(dev, sizes_list, log):
length = i length = i
try: try:
ret = dev.ctrl_transfer(request_type, request, value, index, length, 5000) ret = dev.ctrl_transfer(request_type, request, value, index, length, 5000)
if i == 1: raise_if_different(i, len(ret), lineno(), "send/receive data is the wrong size")
raise_if_different(count, ret[0], lineno(), "send/receive data not match") for j in range(0, i):
else: raise_if_different(data[j], ret[j], lineno(), "send/receive data not match")
raise_if_different(count - 1, ret[0], lineno(), "send/receive data not match")
raise_if_different(count + 1, ret[i - 1], lineno(), "send/receive data not match")
except usb.core.USBError: except usb.core.USBError:
raise_unconditionally(lineno(), "VENDOR_TEST_CTRL_IN_SIZES failed") raise_unconditionally(lineno(), "VENDOR_TEST_CTRL_IN_SIZES failed")
count += 1 count += 1