Mercurial > irccd
comparison tests/src/irccdctl/cli-plugin-reload/main.cpp @ 815:28ff6cb5bf73
tests: add test_plugin_loader and broken_plugin, closes #932 @1h
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 16 Nov 2018 21:08:00 +0100 |
parents | 8460b4a34191 |
children | 06cc2f95f479 |
comparison
equal
deleted
inserted
replaced
814:d0fc4f14678d | 815:28ff6cb5bf73 |
---|---|
18 | 18 |
19 #define BOOST_TEST_MODULE "irccdctl plugin-reload" | 19 #define BOOST_TEST_MODULE "irccdctl plugin-reload" |
20 #include <boost/test/unit_test.hpp> | 20 #include <boost/test/unit_test.hpp> |
21 | 21 |
22 #include <irccd/test/cli_fixture.hpp> | 22 #include <irccd/test/cli_fixture.hpp> |
23 #include <irccd/test/mock.hpp> | 23 #include <irccd/test/mock_plugin.hpp> |
24 | |
25 using irccd::test::cli_fixture; | |
26 using irccd::test::mock; | |
27 | 24 |
28 using irccd::daemon::bot; | 25 using irccd::daemon::bot; |
29 using irccd::daemon::plugin; | 26 using irccd::daemon::plugin; |
27 | |
28 using irccd::test::cli_fixture; | |
29 using irccd::test::mock_plugin; | |
30 | 30 |
31 namespace irccd { | 31 namespace irccd { |
32 | 32 |
33 namespace { | 33 namespace { |
34 | 34 |
35 class reloadable_plugin : public mock, public plugin { | 35 class plugin_reload_fixture : public cli_fixture { |
36 public: | 36 protected: |
37 reloadable_plugin() | 37 std::shared_ptr<mock_plugin> plugin_{new mock_plugin("test")}; |
38 : plugin("test") | |
39 { | |
40 } | |
41 | 38 |
42 auto get_name() const noexcept -> std::string_view override | |
43 { | |
44 return "reload"; | |
45 } | |
46 | |
47 void handle_reload(bot&) override | |
48 { | |
49 push("handle_reload"); | |
50 } | |
51 }; | |
52 | |
53 class plugin_reload_fixture : public cli_fixture { | |
54 public: | |
55 plugin_reload_fixture() | 39 plugin_reload_fixture() |
56 : cli_fixture(IRCCDCTL_EXECUTABLE) | 40 : cli_fixture(IRCCDCTL_EXECUTABLE) |
57 { | 41 { |
42 bot_.plugins().add(plugin_); | |
58 } | 43 } |
59 }; | 44 }; |
60 | 45 |
61 BOOST_FIXTURE_TEST_SUITE(plugin_reload_suite, plugin_reload_fixture) | 46 BOOST_FIXTURE_TEST_SUITE(plugin_reload_suite, plugin_reload_fixture) |
62 | 47 |
63 BOOST_AUTO_TEST_CASE(simple) | 48 BOOST_AUTO_TEST_CASE(simple) |
64 { | 49 { |
65 const auto plugin = std::make_shared<reloadable_plugin>(); | |
66 | |
67 bot_.plugins().add(plugin); | |
68 start(); | 50 start(); |
69 | 51 |
70 const auto [code, out, err] = exec({ "plugin-reload", "test" }); | 52 const auto [code, out, err] = exec({ "plugin-reload", "test" }); |
71 | 53 |
72 BOOST_TEST(!code); | 54 BOOST_TEST(!code); |
73 BOOST_TEST(out.size() == 0U); | 55 BOOST_TEST(out.size() == 0U); |
74 BOOST_TEST(err.size() == 0U); | 56 BOOST_TEST(err.size() == 0U); |
75 BOOST_TEST(plugin->find("handle_reload").size() == 1U); | 57 BOOST_TEST(plugin_->find("handle_reload").size() == 1U); |
76 } | 58 } |
77 | 59 |
78 BOOST_AUTO_TEST_SUITE_END() | 60 BOOST_AUTO_TEST_SUITE_END() |
79 | 61 |
80 } // !namespace | 62 } // !namespace |