Skip to content
This repository was archived by the owner on Dec 15, 2021. It is now read-only.

Commit ee5c679

Browse files
author
Alex Helfet
committed
Fixed tests/smoke.
1 parent 06b22ed commit ee5c679

File tree

1 file changed

+30
-38
lines changed

1 file changed

+30
-38
lines changed

tests/smoke.rs

Lines changed: 30 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,68 @@
1+
#![deny(warnings)]
2+
13
extern crate tempdir;
24

35
use std::env;
46
use std::fs::{File, OpenOptions};
5-
use std::io::{Read, Write};
6-
use std::process::{Child, ChildStdout, Command, Stdio};
7+
use std::io::Write;
8+
use std::process::{Command, Output, Stdio};
79

810
use tempdir::TempDir;
911

1012
// NOTE the order of these fields is important. The file must be closed before
1113
// destroying the temporary directory.
1214
struct ItmDump {
13-
stdout: ChildStdout,
14-
child: Child,
15-
pipe: File,
15+
command: Command,
16+
file: File,
1617
_td: TempDir,
1718
}
1819

1920
impl ItmDump {
2021
pub fn new() -> ItmDump {
2122
let td = TempDir::new("itmdump").unwrap();
22-
let path = td.path().join("fifo");
23+
let path = td.path().join("file");
2324
let mut me = env::current_exe().unwrap();
2425
me.pop();
2526
if me.ends_with("deps") {
2627
me.pop();
2728
}
28-
let mut child = Command::new(me.join("itmdump"))
29-
.arg(&path)
30-
.stdout(Stdio::piped())
31-
.spawn()
32-
.unwrap();
29+
let mut command = Command::new(me.join("itmdump"));
30+
command.arg("-f")
31+
.arg(&path)
32+
.stdout(Stdio::piped());
3333

34-
while !path.exists() {}
35-
let pipe = OpenOptions::new()
34+
let file = OpenOptions::new()
3635
.write(true)
36+
.create(true)
3737
.open(path)
3838
.unwrap();
3939

4040
ItmDump {
41-
pipe: pipe,
42-
stdout: child.stdout.take().unwrap(),
41+
file: file,
4342
_td: td,
44-
child: child,
43+
command: command,
4544
}
4645
}
4746

4847
fn write_u8(&mut self, payload: u8) {
49-
self.pipe.write_all(&[0b01, payload]).unwrap();
50-
self.pipe.flush().unwrap();
48+
self.file.write_all(&[0b01, payload]).unwrap();
49+
self.file.flush().unwrap();
5150
}
5251

5352
fn write_u8x2(&mut self, payload: [u8; 2]) {
54-
self.pipe.write_all(&[0b10, payload[0], payload[1]]).unwrap()
53+
self.file.write_all(&[0b10, payload[0], payload[1]]).unwrap();
54+
self.file.flush().unwrap();
5555
}
5656

5757
fn write_u8x4(&mut self, payload: [u8; 4]) {
58-
self.pipe
58+
self.file
5959
.write_all(&[0b11, payload[0], payload[1], payload[2], payload[3]])
60-
.unwrap()
61-
}
62-
63-
fn read(&mut self, buffer: &mut [u8]) {
64-
self.stdout.read_exact(buffer).unwrap()
60+
.unwrap();
61+
self.file.flush().unwrap();
6562
}
66-
}
6763

68-
impl Drop for ItmDump {
69-
fn drop(&mut self) {
70-
self.child.kill().unwrap()
64+
fn output(&mut self) -> Output {
65+
self.command.output().unwrap()
7166
}
7267
}
7368

@@ -80,10 +75,9 @@ fn chunks() {
8075
itmdump.write_u8x4(*b"Worl");
8176
itmdump.write_u8x2(*b"d\n");
8277

83-
let mut buffer = [0u8; 13];
84-
itmdump.read(&mut buffer);
78+
let out = itmdump.output();
8579

86-
assert_eq!(b"Hello, World\n", &buffer);
80+
assert_eq!(*b"Hello, World\n", *out.stdout);
8781

8882
}
8983

@@ -97,19 +91,17 @@ fn multiple() {
9791
itmdump.write_u8('o' as u8);
9892
itmdump.write_u8('\n' as u8);
9993

100-
let mut buffer = [0u8; 6];
101-
itmdump.read(&mut buffer);
94+
let out = itmdump.output();
10295

103-
assert_eq!(b"Hello\n", &buffer);
96+
assert_eq!(*b"Hello\n", *out.stdout);
10497
}
10598

10699
#[test]
107100
fn single() {
108101
let mut itmdump = ItmDump::new();
109102
itmdump.write_u8('\n' as u8);
110103

111-
let mut buffer = [0u8];
112-
itmdump.read(&mut buffer);
104+
let out = itmdump.output();
113105

114-
assert_eq!(b"\n", &buffer);
106+
assert_eq!(*b"\n", *out.stdout);
115107
}

0 commit comments

Comments
 (0)