[PATCH 7 of 8] rust-hglib: extract test code taking a connection as an argument

Yuya Nishihara yuya at tcha.org
Sun Apr 1 07:14:23 EDT 2018


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1522485631 -32400
#      Sat Mar 31 17:40:31 2018 +0900
# Node ID e6389a767f7198a743558d4b60fb13d6f33dd376
# Parent  8b115cac0dbdb6c140a838e9e986c153eb0aa3a0
rust-hglib: extract test code taking a connection as an argument

diff --git a/rust/hglib/tests/connection.rs b/rust/hglib/tests/connection.rs
--- a/rust/hglib/tests/connection.rs
+++ b/rust/hglib/tests/connection.rs
@@ -37,27 +37,53 @@ fn with_temp_repo<F>(f: F) where F : Fn(
     env::set_current_dir(&*lock).unwrap();
 }
 
+fn raw_command_with<B>(connection: &mut Connection<B>)
+    where B: ConnectionBackend,
+{
+    connection.read_hello().unwrap();
+    let (mut result, mut output) = (-1i32, vec![]);
+    {
+        let run = connection.raw_command(vec![b"summary"]).unwrap();
+        for chunk in run {
+            match chunk {
+                Ok(Chunk::Output(s)) => output.extend(s),
+                Ok(Chunk::Error(_)) => continue,
+                Ok(Chunk::Result(r)) => result = r,
+                Ok(c) => panic!("unexpected chunk: {:?}", c),
+                Err(e) => panic!("failed to read command results: {}", e),
+            }
+        }
+    }
+    assert!(output.starts_with(b"parent:"));
+    assert_eq!(result, 0);
+}
+
+fn raw_command_error_with<B>(connection: &mut Connection<B>)
+    where B: ConnectionBackend,
+{
+    connection.read_hello().unwrap();
+    let (mut result, mut error) = (-1i32, vec![]);
+    {
+        let run = connection.raw_command(vec![b"noexist"]).unwrap();
+        for chunk in run {
+            match chunk {
+                Ok(Chunk::Output(_)) => continue,
+                Ok(Chunk::Error(s)) => error.extend(s),
+                Ok(Chunk::Result(r)) => { result = r },
+                Ok(c) => panic!("unexpected chunk: {:?}", c),
+                Err(e) => panic!("failed to read command results: {}", e),
+            }
+        }
+    }
+    assert_eq!(result, 255);
+    assert!(error.starts_with(b"hg: unknown command 'noexist'"));
+}
+
 #[test]
 fn raw_command() {
     with_temp_repo(|| {
         let mut connection = Connection::new().unwrap();
-        connection.read_hello().unwrap();
-        let (mut result, mut output) = (-1i32, vec![]);
-        {
-            let run = connection.raw_command(vec![b"summary"]).unwrap();
-            for chunk in run {
-                match chunk {
-                    Ok(Chunk::Output(s)) => output.extend(s),
-                    Ok(Chunk::Error(_)) => continue,
-                    Ok(Chunk::Result(r)) => result = r,
-                    Ok(c) => panic!("unexpected chunk: {:?}", c),
-                    Err(e) => panic!("failed to read command results: {}", e),
-                }
-            }
-        }
-        assert!(output.starts_with(b"parent:"));
-        assert_eq!(result, 0);
-
+        raw_command_with(&mut connection);
         connection.close().unwrap();
     });
 }
@@ -66,23 +92,7 @@ fn raw_command() {
 fn raw_command_error() {
     with_temp_repo(|| {
         let mut connection = Connection::new().unwrap();
-        connection.read_hello().unwrap();
-        let (mut result, mut error) = (-1i32, vec![]);
-        {
-            let run = connection.raw_command(vec![b"noexist"]).unwrap();
-            for chunk in run {
-                match chunk {
-                    Ok(Chunk::Output(_)) => continue,
-                    Ok(Chunk::Error(s)) => error.extend(s),
-                    Ok(Chunk::Result(r)) => { result = r },
-                    Ok(c) => panic!("unexpected chunk: {:?}", c),
-                    Err(e) => panic!("failed to read command results: {}", e),
-                }
-            }
-        }
-        assert_eq!(result, 255);
-        assert!(error.starts_with(b"hg: unknown command 'noexist'"));
-
+        raw_command_error_with(&mut connection);
         connection.close().unwrap();
     });
 }


More information about the Mercurial-devel mailing list