add custom command line options to unit tests - refs philsquared/Catch#381
This commit is contained in:
parent
ca3b0c43e7
commit
1687f6ff1b
2 changed files with 59 additions and 3 deletions
|
@ -6143,7 +6143,7 @@ namespace Catch {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Clara::CommandLine<ConfigData> const& cli() const {
|
Clara::CommandLine<ConfigData> & cli() {
|
||||||
return m_cli;
|
return m_cli;
|
||||||
}
|
}
|
||||||
std::vector<Clara::Parser::Token> const& unusedTokens() const {
|
std::vector<Clara::Parser::Token> const& unusedTokens() const {
|
||||||
|
|
|
@ -1,17 +1,73 @@
|
||||||
#define CATCH_CONFIG_RUNNER
|
#define CATCH_CONFIG_RUNNER
|
||||||
#include "catch.hpp"
|
#include "catch.hpp"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <mapnik/util/fs.hpp>
|
||||||
#include <mapnik/datasource_cache.hpp>
|
#include <mapnik/datasource_cache.hpp>
|
||||||
|
#include <boost/filesystem/convenience.hpp>
|
||||||
|
|
||||||
#include "cleanup.hpp" // run_cleanup()
|
#include "cleanup.hpp" // run_cleanup()
|
||||||
|
|
||||||
|
std::string plugin_path;
|
||||||
|
|
||||||
|
inline void set_plugin_path(Catch::ConfigData&, std::string const& _plugin_path ) {
|
||||||
|
plugin_path = _plugin_path;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string working_dir;
|
||||||
|
|
||||||
|
inline void set_working_dir(Catch::ConfigData&, std::string const& _working_dir ) {
|
||||||
|
working_dir = _working_dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main (int argc, char* const argv[])
|
int main (int argc, char* const argv[])
|
||||||
{
|
{
|
||||||
mapnik::datasource_cache::instance().register_datasources("plugins/input/");
|
Catch::Session session;
|
||||||
|
|
||||||
int result = Catch::Session().run( argc, argv );
|
auto & cli = session.cli();
|
||||||
|
|
||||||
|
cli["-p"]["--plugins"]
|
||||||
|
.describe("path to mapnik plugins")
|
||||||
|
.bind(&set_plugin_path, "plugins");
|
||||||
|
|
||||||
|
cli["-C"]["--working-directory"]
|
||||||
|
.describe("change working directory")
|
||||||
|
.bind(&set_working_dir, "working directory");
|
||||||
|
|
||||||
|
int result = session.applyCommandLine(argc, argv);
|
||||||
|
|
||||||
|
if (!plugin_path.empty())
|
||||||
|
{
|
||||||
|
if (!mapnik::util::exists(plugin_path))
|
||||||
|
{
|
||||||
|
std::clog << "Could not find " << plugin_path << "\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
mapnik::datasource_cache::instance().register_datasources(plugin_path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mapnik::datasource_cache::instance().register_datasources("plugins/input/");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!working_dir.empty())
|
||||||
|
{
|
||||||
|
if (!mapnik::util::exists(working_dir))
|
||||||
|
{
|
||||||
|
std::clog << "Could not find " << working_dir << "\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
boost::filesystem::current_path(working_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result == 0)
|
||||||
|
{
|
||||||
|
result = session.run();
|
||||||
|
}
|
||||||
|
|
||||||
testing::run_cleanup();
|
testing::run_cleanup();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue