Mercurial > irccd
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");