From a3d65f020a40cb326b7d6cb8064cc02a716f6d96 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Wed, 14 Dec 2016 18:51:35 +0000 Subject: [PATCH] Replace some invalid_argument exceptions Throw ConditionSyntaxError instead when evaluating conditions. --- src/backend/metadata/condition_evaluator.cpp | 7 ++++--- src/tests/backend/metadata/condition_grammar_test.h | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backend/metadata/condition_evaluator.cpp b/src/backend/metadata/condition_evaluator.cpp index 0ed182b2..4b8d4656 100644 --- a/src/backend/metadata/condition_evaluator.cpp +++ b/src/backend/metadata/condition_evaluator.cpp @@ -27,6 +27,7 @@ #include #include "backend/helpers/helpers.h" +#include "loot/exception/condition_syntax_error.h" using boost::format; using boost::locale::translate; @@ -170,7 +171,7 @@ void ConditionEvaluator::validatePath(const boost::filesystem::path& path) { if (component == ".." && temp.filename() == "..") { BOOST_LOG_TRIVIAL(error) << "Invalid file path: " << path; - throw std::invalid_argument((format(translate("Invalid file path: %1%")) % path.string()).str()); + throw ConditionSyntaxError((format(translate("Invalid file path: %1%")) % path.string()).str()); } temp /= component; @@ -180,7 +181,7 @@ void ConditionEvaluator::validateRegex(const std::string& regexString) { try { std::regex(regexString, std::regex::ECMAScript | std::regex::icase); } catch (std::regex_error& e) { - throw std::invalid_argument((format(translate("Invalid regex string \"%1%\": %2%")) % regexString % e.what()).str()); + throw ConditionSyntaxError((format(translate("Invalid regex string \"%1%\": %2%")) % regexString % e.what()).str()); } } @@ -220,7 +221,7 @@ std::pair ConditionEvaluator::splitRegex(co reg = std::regex(filename, std::regex::ECMAScript | std::regex::icase); } catch (std::regex_error& e) { BOOST_LOG_TRIVIAL(error) << "Invalid regex string:" << filename; - throw std::invalid_argument((boost::format(boost::locale::translate("Invalid regex string \"%1%\": %2%")) % filename % e.what()).str()); + throw ConditionSyntaxError((boost::format(boost::locale::translate("Invalid regex string \"%1%\": %2%")) % filename % e.what()).str()); } return std::pair(parent, reg); diff --git a/src/tests/backend/metadata/condition_grammar_test.h b/src/tests/backend/metadata/condition_grammar_test.h index 2b8890f1..7bf901f8 100644 --- a/src/tests/backend/metadata/condition_grammar_test.h +++ b/src/tests/backend/metadata/condition_grammar_test.h @@ -155,7 +155,7 @@ TEST_P(ConditionGrammarTest, evaluatingAFileConditionForAnUnsafePathShouldThrow) std::cend(condition), grammar, skipper_, - result_), std::invalid_argument); + result_), ConditionSyntaxError); } TEST_P(ConditionGrammarTest, aFileConditionWithAnInvalidRegexShouldThrow) { @@ -166,7 +166,7 @@ TEST_P(ConditionGrammarTest, aFileConditionWithAnInvalidRegexShouldThrow) { std::cend(condition), grammar, skipper_, - result_), std::invalid_argument); + result_), ConditionSyntaxError); } TEST_P(ConditionGrammarTest, aFileConditionWithARegexMatchingAPluginThatExistsShouldEvaluateToTrue) {