diff options
-rw-r--r-- | icespider/core/core.cpp | 10 | ||||
-rw-r--r-- | icespider/core/core.h | 2 | ||||
-rw-r--r-- | icespider/fcgi/main.cpp | 2 | ||||
-rw-r--r-- | icespider/unittests/config/custom.properties | 1 | ||||
-rw-r--r-- | icespider/unittests/testApp.cpp | 49 |
5 files changed, 57 insertions, 7 deletions
diff --git a/icespider/core/core.cpp b/icespider/core/core.cpp index b5eec1e..077d481 100644 --- a/icespider/core/core.cpp +++ b/icespider/core/core.cpp @@ -17,12 +17,14 @@ namespace IceSpider { return true; } - Core::Core(int argc, char ** argv) + Core::Core(const Ice::StringSeq & args) { Ice::InitializationData id; - id.properties = Ice::createProperties(argc, argv); - if (boost::filesystem::exists(defaultConfig)) { - id.properties->load(defaultConfig.string()); + id.properties = Ice::createProperties(); + id.properties->parseCommandLineOptions("", args); + auto config = id.properties->getPropertyWithDefault("IceSpider.Config", defaultConfig.string()); + if (boost::filesystem::exists(config)) { + id.properties->load(config); } communicator = Ice::initialize(id); diff --git a/icespider/core/core.h b/icespider/core/core.h index 77d338e..e37efd3 100644 --- a/icespider/core/core.h +++ b/icespider/core/core.h @@ -13,7 +13,7 @@ namespace IceSpider { typedef std::vector<const IRouteHandler *> LengthRoutes; typedef std::vector<LengthRoutes> Routes; - Core(int = 0, char ** = NULL); + Core(const Ice::StringSeq & = {}); ~Core(); void process(IHttpRequest *) const; diff --git a/icespider/fcgi/main.cpp b/icespider/fcgi/main.cpp index d92dc91..2c543e1 100644 --- a/icespider/fcgi/main.cpp +++ b/icespider/fcgi/main.cpp @@ -8,7 +8,7 @@ DLL_PUBLIC int main(int argc, char ** argv, char ** env) { - Core core(argc, argv); + Core core; if (!FCGX_IsCGI()) { FCGX_Request request; diff --git a/icespider/unittests/config/custom.properties b/icespider/unittests/config/custom.properties new file mode 100644 index 0000000..302ea34 --- /dev/null +++ b/icespider/unittests/config/custom.properties @@ -0,0 +1 @@ +InFile=something diff --git a/icespider/unittests/testApp.cpp b/icespider/unittests/testApp.cpp index 67cec50..e19096f 100644 --- a/icespider/unittests/testApp.cpp +++ b/icespider/unittests/testApp.cpp @@ -90,7 +90,54 @@ class TestRequest : public IHttpRequest { const HttpMethod method; }; -BOOST_FIXTURE_TEST_SUITE(c, Core); +class CoreWithProps : public Core { + public: + CoreWithProps() : + Core({ + "--Custom.Prop=value" + }) + { + } +}; + +BOOST_FIXTURE_TEST_SUITE(props, CoreWithProps); + +BOOST_AUTO_TEST_CASE( properties ) +{ + BOOST_REQUIRE_EQUAL("Test", + this->communicator->getProperties()->getProperty("TestIceSpider.TestApi")); + BOOST_REQUIRE_EQUAL("value", + this->communicator->getProperties()->getProperty("Custom.Prop")); +} + +BOOST_AUTO_TEST_SUITE_END(); + +class CoreWithFileProps : public Core { + public: + CoreWithFileProps() : + Core({ + "--IceSpider.Config=config/custom.properties", + "--Custom.Prop=value" + }) + { + } +}; + +BOOST_FIXTURE_TEST_SUITE(fileProps, CoreWithFileProps); + +BOOST_AUTO_TEST_CASE( properties ) +{ + BOOST_REQUIRE_EQUAL("", + this->communicator->getProperties()->getProperty("TestIceSpider.TestApi")); + BOOST_REQUIRE_EQUAL("something", + this->communicator->getProperties()->getProperty("InFile")); + BOOST_REQUIRE_EQUAL("value", + this->communicator->getProperties()->getProperty("Custom.Prop")); +} + +BOOST_AUTO_TEST_SUITE_END(); + +BOOST_FIXTURE_TEST_SUITE(defaultProps, Core); BOOST_AUTO_TEST_CASE( testCoreSettings ) { |