Skip to content

Commit c520721

Browse files
committed
Merge branch 'Disasm-fix-tests'
2 parents b076c61 + e475ae6 commit c520721

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

tests/test_class_host/tests.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::cmp::max;
12
use std::fmt::Write;
23
use std::time::{Duration, Instant};
34
use libusb::*;
@@ -142,23 +143,25 @@ fn bulk_loopback(dev, _out) {
142143
data.len(),
143144
"bulk write len {}", len);
144145

145-
if *len % 64 == 0 {
146+
if *len > 0 && *len % 64 == 0 {
146147
assert_eq!(
147148
dev.write_bulk(0x01, &[], TIMEOUT)
148149
.expect(&format!("bulk write zero-length packet")),
149150
0,
150151
"bulk write zero-length packet");
151152
}
152153

153-
let mut response = vec![0u8; *len];
154+
// Prevent libusb from instantaneously reading an empty packet on Windows when
155+
// zero-sized buffer is passed.
156+
let mut response = vec![0u8; max(*len, 1)];
154157

155158
assert_eq!(
156159
dev.read_bulk(0x81, &mut response, TIMEOUT)
157160
.expect(&format!("bulk read len {}", len)),
158161
data.len(),
159162
"bulk read len {}", len);
160163

161-
assert_eq!(&response, &data);
164+
assert_eq!(&response[..*len], &data[..]);
162165
}
163166
}
164167

@@ -172,15 +175,17 @@ fn interrupt_loopback(dev, _out) {
172175
data.len(),
173176
"interrupt write len {}", len);
174177

175-
let mut response = vec![0u8; *len];
178+
// Prevent libusb from instantaneously reading an empty packet on Windows when
179+
// zero-sized buffer is passed.
180+
let mut response = vec![0u8; max(*len, 1)];
176181

177182
assert_eq!(
178183
dev.read_interrupt(0x82, &mut response, TIMEOUT)
179184
.expect(&format!("interrupt read len {}", len)),
180185
data.len(),
181186
"interrupt read len {}", len);
182187

183-
assert_eq!(&response, &data);
188+
assert_eq!(&response[..*len], &data[..]);
184189
}
185190
}
186191

0 commit comments

Comments
 (0)