diff --git a/src/backend/metadata/condition_evaluator.cpp b/src/backend/metadata/condition_evaluator.cpp index fae49c33..c4565c83 100644 --- a/src/backend/metadata/condition_evaluator.cpp +++ b/src/backend/metadata/condition_evaluator.cpp @@ -135,8 +135,6 @@ bool ConditionEvaluator::checksumMatches(const std::string& filePath, const uint realChecksum = GetCrc32(game_->DataPath() / filePath); else if ((boost::iends_with(filePath, ".esp") || boost::iends_with(filePath, ".esm")) && boost::filesystem::exists(game_->DataPath() / (filePath + ".ghost"))) realChecksum = GetCrc32(game_->DataPath() / (filePath + ".ghost")); - } else { - return false; } } diff --git a/src/tests/backend/metadata/condition_grammar_test.h b/src/tests/backend/metadata/condition_grammar_test.h index 4f363008..086b5f32 100644 --- a/src/tests/backend/metadata/condition_grammar_test.h +++ b/src/tests/backend/metadata/condition_grammar_test.h @@ -247,6 +247,21 @@ TEST_P(ConditionGrammarTest, aChecksumConditionWithACrcThatMatchesTheActualPlugi EXPECT_TRUE(result_); } +TEST_P(ConditionGrammarTest, aChecksumConditionWithACrcThatMatchesTheActualCachedPluginCrcShouldEvaluateToTrue) { + ASSERT_NO_THROW(game_.LoadAllInstalledPlugins(false)); + + Grammar grammar(&game_); + std::string condition("checksum(\"" + blankEsm + "\", " + IntToHexString(blankEsmCrc) + ")"); + + success_ = boost::spirit::qi::phrase_parse(std::cbegin(condition), + std::cend(condition), + grammar, + skipper_, + result_); + EXPECT_TRUE(success_); + EXPECT_TRUE(result_); +} + TEST_P(ConditionGrammarTest, aChecksumConditionWithACrcThatDoesNotMatchTheActualPluginCrcShouldEvaluateToFalse) { Grammar grammar(&game_); std::string condition("checksum(\"" + blankEsm + "\", DEADBEEF)");