changeset 739:46a1877749ff

Tests: add irccdctl result code check
author David Demelier <markand@malikania.fr>
date Wed, 25 Jul 2018 21:33:00 +0200
parents 199f36d4edc8
children 7088476813ab
files libirccd-test/irccd/test/cli_test.cpp libirccd-test/irccd/test/cli_test.hpp tests/src/irccdctl/cli-plugin-config/main.cpp tests/src/irccdctl/cli-plugin-info/main.cpp tests/src/irccdctl/cli-plugin-list/main.cpp tests/src/irccdctl/cli-plugin-load/main.cpp tests/src/irccdctl/cli-plugin-reload/main.cpp tests/src/irccdctl/cli-plugin-unload/main.cpp tests/src/irccdctl/cli-rule-add/main.cpp tests/src/irccdctl/cli-rule-edit/main.cpp tests/src/irccdctl/cli-rule-info/main.cpp tests/src/irccdctl/cli-rule-list/main.cpp tests/src/irccdctl/cli-rule-move/main.cpp tests/src/irccdctl/cli-rule-remove/main.cpp
diffstat 14 files changed, 97 insertions(+), 58 deletions(-) [+]
line wrap: on
line diff
--- a/libirccd-test/irccd/test/cli_test.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/libirccd-test/irccd/test/cli_test.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -55,7 +55,7 @@
     std::this_thread::sleep_for(std::chrono::milliseconds(250));
 }
 
-cli_test::outputs cli_test::exec(const std::vector<std::string>& args)
+auto cli_test::exec(const std::vector<std::string>& args) -> result
 {
     static const std::string irccdctl = IRCCDCTL_EXECUTABLE;
     static const std::string conf = CMAKE_BINARY_DIR "/tmp/irccdctl.conf";
@@ -65,24 +65,23 @@
     oss << irccdctl << " -c " << conf << " ";
     oss << string_util::join(args, " ");
 
-    proc::ipstream out;
-    proc::ipstream err;
+    proc::ipstream stream_out, stream_err;
 
-    proc::system(
+    const auto ret = proc::system(
         oss.str(),
         proc::std_in.close(),
-        proc::std_out > out,
-        proc::std_err > err
+        proc::std_out > stream_out,
+        proc::std_err > stream_err
     );
 
-    outputs result;
+    outputs out, err;
 
-    for (std::string line; out && std::getline(out, line); )
-        result.first.push_back(line);
-    for (std::string line; err && std::getline(err, line); )
-        result.second.push_back(line);
+    for (std::string line; stream_out && std::getline(stream_out, line); )
+        out.push_back(line);
+    for (std::string line; stream_err && std::getline(stream_err, line); )
+        err.push_back(line);
 
-    return result;
+    return {ret, out, err};
 }
 
 } // !irccd
--- a/libirccd-test/irccd/test/cli_test.hpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/libirccd-test/irccd/test/cli_test.hpp	Wed Jul 25 21:33:00 2018 +0200
@@ -25,7 +25,7 @@
  */
 
 #include <thread>
-#include <utility>
+#include <tuple>
 #include <vector>
 
 #include <irccd/daemon/irccd.hpp>
@@ -64,12 +64,12 @@
     /**
      * Type for all lines printed.
      */
-    using output = std::vector<std::string>;
+    using outputs = std::vector<std::string>;
 
     /**
      * Collection of output from stdout/stderr respectively.
      */
-    using outputs = std::pair<output, output>;
+    using result = std::tuple<int, outputs, outputs>;
 
     /**
      * Construct and initialize and irccd daemon running in a thread.
@@ -93,9 +93,9 @@
      * Execute irccdctl.
      *
      * \param args the arguments to irccdctl
-     * \return the stdout/stderr result pair
+     * \return the stdout/stderr and exit code
      */
-    outputs exec(const std::vector<std::string>& args);
+    auto exec(const std::vector<std::string>& args) -> result;
 };
 
 } // !irccd
--- a/tests/src/irccdctl/cli-plugin-config/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-plugin-config/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -51,17 +51,19 @@
 
     // First, configure. No output yet
     {
-        const auto [out, err] = exec({ "plugin-config", "conf2", "verbose", "false" });
+        const auto [code, out, err] = exec({ "plugin-config", "conf2", "verbose", "false" });
 
         // no output yet.
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     // Get the newly created value.
     {
-        const auto [out, err] = exec({ "plugin-config", "conf2", "verbose" });
+        const auto [code, out, err] = exec({ "plugin-config", "conf2", "verbose" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 1U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0] == "false");
@@ -72,8 +74,9 @@
 {
     start();
 
-    const auto [out, err] = exec({ "plugin-config", "conf1" });
+    const auto [code, out, err] = exec({ "plugin-config", "conf1" });
 
+    BOOST_TEST(!code);
     BOOST_TEST(out.size() == 2U);
     BOOST_TEST(err.size() == 0U);
     BOOST_TEST(out[0] == "v1               : 123");
--- a/tests/src/irccdctl/cli-plugin-info/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-plugin-info/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -33,8 +33,9 @@
     irccd_.plugins().add(std::make_unique<mock_plugin>("test"));
     start();
 
-    const auto [out, err] = exec({ "plugin-info", "test" });
+    const auto [code, out, err] = exec({ "plugin-info", "test" });
 
+    BOOST_TEST(!code);
     BOOST_TEST(out.size() == 4U);
     BOOST_TEST(err.size() == 0U);
     BOOST_TEST(out[0] == "Author         : David Demelier <markand@malikania.fr>");
--- a/tests/src/irccdctl/cli-plugin-list/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-plugin-list/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -34,8 +34,9 @@
     irccd_.plugins().add(std::make_unique<mock_plugin>("p2"));
     start();
 
-    const auto [out, err] = exec({ "plugin-list" });
+    const auto [code, out, err] = exec({ "plugin-list" });
 
+    BOOST_TEST(!code);
     BOOST_TEST(out.size() == 2U);
     BOOST_TEST(err.size() == 0U);
     BOOST_TEST(out[0] == "p1");
--- a/tests/src/irccdctl/cli-plugin-load/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-plugin-load/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -57,16 +57,18 @@
 
     // Load a plugin first.
     {
-        const auto [out, err] = exec({ "plugin-load", "test" });
+        const auto [code, out, err] = exec({ "plugin-load", "test" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     // Get the new list of plugins.
     {
-        const auto [out, err] = exec({ "plugin-list" });
+        const auto [code, out, err] = exec({ "plugin-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 3U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0] == "p1");
--- a/tests/src/irccdctl/cli-plugin-reload/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-plugin-reload/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -53,8 +53,9 @@
     irccd_.plugins().add(plugin);
     start();
 
-    const auto [out, err] = exec({ "plugin-reload", "test" });
+    const auto [code, out, err] = exec({ "plugin-reload", "test" });
 
+    BOOST_TEST(!code);
     BOOST_TEST(out.size() == 0U);
     BOOST_TEST(err.size() == 0U);
     BOOST_TEST(plugin->find("handle_reload").size() == 1U);
--- a/tests/src/irccdctl/cli-plugin-unload/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-plugin-unload/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -53,8 +53,9 @@
     irccd_.plugins().add(plugin);
     start();
 
-    const auto [out, err] = exec({ "plugin-unload", "test" });
+    const auto [code, out, err] = exec({ "plugin-unload", "test" });
 
+    BOOST_TEST(!code);
     BOOST_TEST(out.size() == 0U);
     BOOST_TEST(err.size() == 0U);
     BOOST_TEST(plugin->find("handle_unload").size() == 1U);
--- a/tests/src/irccdctl/cli-rule-add/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-rule-add/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -32,7 +32,7 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-add",
+        const auto [code, out, err] = exec({ "rule-add",
             "-c c1",        "--add-channel c2",
             "-e onMessage", "--add-event onCommand",
             "-p p1",        "--add-plugin p2",
@@ -40,13 +40,15 @@
             "drop"
         });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -63,15 +65,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-add", "-s s1", "--add-server s2", "drop" });
+        const auto [code, out, err] = exec({ "rule-add", "-s s1", "--add-server s2", "drop" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -88,15 +92,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-add", "-c c1", "--add-channel c2", "drop" });
+        const auto [code, out, err] = exec({ "rule-add", "-c c1", "--add-channel c2", "drop" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -113,15 +119,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-add", "-p p1", "--add-plugin p2", "drop" });
+        const auto [code, out, err] = exec({ "rule-add", "-p p1", "--add-plugin p2", "drop" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -138,15 +146,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-add", "-e onMessage", "--add-event onCommand", "drop" });
+        const auto [code, out, err] = exec({ "rule-add", "-e onMessage", "--add-event onCommand", "drop" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
--- a/tests/src/irccdctl/cli-rule-edit/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-rule-edit/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -47,19 +47,21 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-edit",
+        const auto [code, out, err] = exec({ "rule-edit",
             "-s ts1",   "--add-server ts2",
             "-S s1",    "--remove-server s2",
             "0"
         });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -76,19 +78,21 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-edit",
+        const auto [code, out, err] = exec({ "rule-edit",
             "-c tc1",   "--add-channel tc2",
             "-C c1",    "--remove-channel c2",
             "0"
         });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -105,19 +109,21 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-edit",
+        const auto [code, out, err] = exec({ "rule-edit",
             "-p tp1",   "--add-plugin tp2",
             "-P p1",    "--remove-plugin p2",
             "0"
         });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -134,19 +140,21 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-edit",
+        const auto [code, out, err] = exec({ "rule-edit",
             "-e onKick",    "--add-event onNickname",
             "-E onMessage", "--remove-event onCommand",
             "0"
         });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -163,15 +171,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-edit", "-a accept", "0" });
+        const auto [code, out, err] = exec({ "rule-edit", "-a accept", "0" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -188,15 +198,16 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-edit", "--action accept", "0" });
+        const auto [code, out, err] = exec({ "rule-edit", "--action accept", "0" });
 
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 7U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
--- a/tests/src/irccdctl/cli-rule-info/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-rule-info/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -39,8 +39,9 @@
     });
     start();
 
-    const auto [out, err] = exec({ "rule-info", "0" });
+    const auto [code, out, err] = exec({ "rule-info", "0" });
 
+    BOOST_TEST(!code);
     BOOST_TEST(out.size() == 7U);
     BOOST_TEST(err.size() == 0U);
     BOOST_TEST(out[0]  == "rule:        0");
--- a/tests/src/irccdctl/cli-rule-list/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-rule-list/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -39,8 +39,9 @@
     });
     start();
 
-    const auto [out, err] = exec({ "rule-list" });
+    const auto [code, out, err] = exec({ "rule-list" });
 
+    BOOST_TEST(!code);
     BOOST_TEST(out.size() == 7U);
     BOOST_TEST(err.size() == 0U);
     BOOST_TEST(out[0]  == "rule:        0");
--- a/tests/src/irccdctl/cli-rule-move/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-rule-move/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -63,15 +63,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-move", "0", "1" });
+        const auto [code, out, err] = exec({ "rule-move", "0", "1" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 21U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -103,15 +105,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-move", "2", "0" });
+        const auto [code, out, err] = exec({ "rule-move", "2", "0" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 21U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
@@ -143,15 +147,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-move", "2", "2" });
+        const auto [code, out, err] = exec({ "rule-move", "2", "2" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 21U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");
--- a/tests/src/irccdctl/cli-rule-remove/main.cpp	Wed Jul 25 12:33:11 2018 +0200
+++ b/tests/src/irccdctl/cli-rule-remove/main.cpp	Wed Jul 25 21:33:00 2018 +0200
@@ -63,15 +63,17 @@
     start();
 
     {
-        const auto [out, err] = exec({ "rule-remove", "0" });
+        const auto [code, out, err] = exec({ "rule-remove", "0" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 0U);
         BOOST_TEST(err.size() == 0U);
     }
 
     {
-        const auto [out, err] = exec({ "rule-list" });
+        const auto [code, out, err] = exec({ "rule-list" });
 
+        BOOST_TEST(!code);
         BOOST_TEST(out.size() == 14U);
         BOOST_TEST(err.size() == 0U);
         BOOST_TEST(out[0]  == "rule:        0");