Skip to content

Commit 33a7fe9

Browse files
authored
Refactor unit tests in mod builder & error (#55)
Wrap them in a `tests` module, which is only compiled in testing and ignored in release. Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
1 parent 1def601 commit 33a7fe9

File tree

2 files changed

+101
-91
lines changed

2 files changed

+101
-91
lines changed

src/builder.rs

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -365,41 +365,46 @@ impl KnownHosts {
365365
}
366366
}
367367

368-
#[test]
369-
fn resolve() {
370-
let b = SessionBuilder::default();
371-
let (b, d) = b.resolve("ssh://test-user@127.0.0.1:2222");
372-
assert_eq!(b.port.as_deref(), Some("2222"));
373-
assert_eq!(b.user.as_deref(), Some("test-user"));
374-
assert_eq!(d, "127.0.0.1");
375-
376-
let b = SessionBuilder::default();
377-
let (b, d) = b.resolve("ssh://test-user@opensshtest:2222");
378-
assert_eq!(b.port.as_deref(), Some("2222"));
379-
assert_eq!(b.user.as_deref(), Some("test-user"));
380-
assert_eq!(d, "opensshtest");
381-
382-
let b = SessionBuilder::default();
383-
let (b, d) = b.resolve("ssh://opensshtest:2222");
384-
assert_eq!(b.port.as_deref(), Some("2222"));
385-
assert_eq!(b.user.as_deref(), None);
386-
assert_eq!(d, "opensshtest");
387-
388-
let b = SessionBuilder::default();
389-
let (b, d) = b.resolve("ssh://test-user@opensshtest");
390-
assert_eq!(b.port.as_deref(), None);
391-
assert_eq!(b.user.as_deref(), Some("test-user"));
392-
assert_eq!(d, "opensshtest");
393-
394-
let b = SessionBuilder::default();
395-
let (b, d) = b.resolve("ssh://opensshtest");
396-
assert_eq!(b.port.as_deref(), None);
397-
assert_eq!(b.user.as_deref(), None);
398-
assert_eq!(d, "opensshtest");
399-
400-
let b = SessionBuilder::default();
401-
let (b, d) = b.resolve("opensshtest");
402-
assert_eq!(b.port.as_deref(), None);
403-
assert_eq!(b.user.as_deref(), None);
404-
assert_eq!(d, "opensshtest");
368+
#[cfg(test)]
369+
mod tests {
370+
use super::SessionBuilder;
371+
372+
#[test]
373+
fn resolve() {
374+
let b = SessionBuilder::default();
375+
let (b, d) = b.resolve("ssh://test-user@127.0.0.1:2222");
376+
assert_eq!(b.port.as_deref(), Some("2222"));
377+
assert_eq!(b.user.as_deref(), Some("test-user"));
378+
assert_eq!(d, "127.0.0.1");
379+
380+
let b = SessionBuilder::default();
381+
let (b, d) = b.resolve("ssh://test-user@opensshtest:2222");
382+
assert_eq!(b.port.as_deref(), Some("2222"));
383+
assert_eq!(b.user.as_deref(), Some("test-user"));
384+
assert_eq!(d, "opensshtest");
385+
386+
let b = SessionBuilder::default();
387+
let (b, d) = b.resolve("ssh://opensshtest:2222");
388+
assert_eq!(b.port.as_deref(), Some("2222"));
389+
assert_eq!(b.user.as_deref(), None);
390+
assert_eq!(d, "opensshtest");
391+
392+
let b = SessionBuilder::default();
393+
let (b, d) = b.resolve("ssh://test-user@opensshtest");
394+
assert_eq!(b.port.as_deref(), None);
395+
assert_eq!(b.user.as_deref(), Some("test-user"));
396+
assert_eq!(d, "opensshtest");
397+
398+
let b = SessionBuilder::default();
399+
let (b, d) = b.resolve("ssh://opensshtest");
400+
assert_eq!(b.port.as_deref(), None);
401+
assert_eq!(b.user.as_deref(), None);
402+
assert_eq!(d, "opensshtest");
403+
404+
let b = SessionBuilder::default();
405+
let (b, d) = b.resolve("opensshtest");
406+
assert_eq!(b.port.as_deref(), None);
407+
assert_eq!(b.user.as_deref(), None);
408+
assert_eq!(d, "opensshtest");
409+
}
405410
}

src/error.rs

Lines changed: 59 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -194,49 +194,41 @@ impl Error {
194194
}
195195
}
196196

197-
#[test]
198-
fn parse_error() {
199-
let err = "ssh: Warning: Permanently added \'login.csail.mit.edu,128.52.131.0\' (ECDSA) to the list of known hosts.\r\nopenssh-tester@login.csail.mit.edu: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive).";
200-
let err = Error::interpret_ssh_error(err);
201-
let target = io::Error::new(io::ErrorKind::PermissionDenied, "openssh-tester@login.csail.mit.edu: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive).");
202-
if let Error::Connect(e) = err {
203-
assert_eq!(e.kind(), target.kind());
204-
assert_eq!(format!("{}", e), format!("{}", target));
205-
} else {
206-
unreachable!("{:?}", err);
197+
#[cfg(test)]
198+
mod tests {
199+
use super::{io, Error};
200+
201+
#[test]
202+
fn parse_error() {
203+
let err = "ssh: Warning: Permanently added \'login.csail.mit.edu,128.52.131.0\' (ECDSA) to the list of known hosts.\r\nopenssh-tester@login.csail.mit.edu: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive).";
204+
let err = Error::interpret_ssh_error(err);
205+
let target = io::Error::new(io::ErrorKind::PermissionDenied, "openssh-tester@login.csail.mit.edu: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive).");
206+
if let Error::Connect(e) = err {
207+
assert_eq!(e.kind(), target.kind());
208+
assert_eq!(format!("{}", e), format!("{}", target));
209+
} else {
210+
unreachable!("{:?}", err);
211+
}
207212
}
208-
}
209213

210-
#[test]
211-
fn error_sanity() {
212-
use std::error::Error as _;
213-
214-
let ioe = || io::Error::new(io::ErrorKind::Other, "test");
215-
let expect = ioe();
216-
217-
let e = Error::Master(ioe());
218-
assert!(!format!("{}", e).is_empty());
219-
let e = e
220-
.source()
221-
.expect("source failed")
222-
.downcast_ref::<io::Error>()
223-
.expect("source not io");
224-
assert_eq!(e.kind(), expect.kind());
225-
assert_eq!(format!("{}", e), format!("{}", expect));
226-
227-
let e = Error::Connect(ioe());
228-
assert!(!format!("{}", e).is_empty());
229-
let e = e
230-
.source()
231-
.expect("source failed")
232-
.downcast_ref::<io::Error>()
233-
.expect("source not io");
234-
assert_eq!(e.kind(), expect.kind());
235-
assert_eq!(format!("{}", e), format!("{}", expect));
214+
#[test]
215+
fn error_sanity() {
216+
use std::error::Error as _;
236217

237-
#[cfg(feature = "process-mux")]
238-
{
239-
let e = Error::Ssh(ioe());
218+
let ioe = || io::Error::new(io::ErrorKind::Other, "test");
219+
let expect = ioe();
220+
221+
let e = Error::Master(ioe());
222+
assert!(!format!("{}", e).is_empty());
223+
let e = e
224+
.source()
225+
.expect("source failed")
226+
.downcast_ref::<io::Error>()
227+
.expect("source not io");
228+
assert_eq!(e.kind(), expect.kind());
229+
assert_eq!(format!("{}", e), format!("{}", expect));
230+
231+
let e = Error::Connect(ioe());
240232
assert!(!format!("{}", e).is_empty());
241233
let e = e
242234
.source()
@@ -245,19 +237,32 @@ fn error_sanity() {
245237
.expect("source not io");
246238
assert_eq!(e.kind(), expect.kind());
247239
assert_eq!(format!("{}", e), format!("{}", expect));
248-
}
249240

250-
let e = Error::Remote(ioe());
251-
assert!(!format!("{}", e).is_empty());
252-
let e = e
253-
.source()
254-
.expect("source failed")
255-
.downcast_ref::<io::Error>()
256-
.expect("source not io");
257-
assert_eq!(e.kind(), expect.kind());
258-
assert_eq!(format!("{}", e), format!("{}", expect));
259-
260-
let e = Error::Disconnected;
261-
assert!(!format!("{}", e).is_empty());
262-
assert!(e.source().is_none());
241+
#[cfg(feature = "process-mux")]
242+
{
243+
let e = Error::Ssh(ioe());
244+
assert!(!format!("{}", e).is_empty());
245+
let e = e
246+
.source()
247+
.expect("source failed")
248+
.downcast_ref::<io::Error>()
249+
.expect("source not io");
250+
assert_eq!(e.kind(), expect.kind());
251+
assert_eq!(format!("{}", e), format!("{}", expect));
252+
}
253+
254+
let e = Error::Remote(ioe());
255+
assert!(!format!("{}", e).is_empty());
256+
let e = e
257+
.source()
258+
.expect("source failed")
259+
.downcast_ref::<io::Error>()
260+
.expect("source not io");
261+
assert_eq!(e.kind(), expect.kind());
262+
assert_eq!(format!("{}", e), format!("{}", expect));
263+
264+
let e = Error::Disconnected;
265+
assert!(!format!("{}", e).is_empty());
266+
assert!(e.source().is_none());
267+
}
263268
}

0 commit comments

Comments
 (0)