| 2706 | |
| 2707 | #ifdef HAVE_RULES |
| 2708 | void ruleFileMulti() { |
| 2709 | REDIRECT; |
| 2710 | ScopedFile file("rule.xml", |
| 2711 | "<rules>\n" |
| 2712 | "<rule>\n" |
| 2713 | "<engine>pcre</engine>\n" |
| 2714 | "<tokenlist>raw</tokenlist>\n" |
| 2715 | "<pattern>.+</pattern>\n" |
| 2716 | "<message>\n" |
| 2717 | "<severity>error</severity>\n" |
| 2718 | "<id>ruleId1</id>\n" |
| 2719 | "<summary>ruleSummary1</summary>\n" |
| 2720 | "</message>\n" |
| 2721 | "</rule>\n" |
| 2722 | "<rule>\n" |
| 2723 | "<tokenlist>define</tokenlist>\n" |
| 2724 | "<pattern>.*</pattern>\n" |
| 2725 | "<message>\n" |
| 2726 | "<severity>warning</severity>\n" |
| 2727 | "<id>ruleId2</id>\n" |
| 2728 | "<summary>ruleSummary2</summary>\n" |
| 2729 | "</message>\n" |
| 2730 | "</rule>\n" |
| 2731 | "</rules>"); |
| 2732 | const char * const argv[] = {"cppcheck", "--rule-file=rule.xml", "file.cpp"}; |
| 2733 | ASSERT_EQUALS_ENUM(CmdLineParser::Result::Success, parseFromArgs(argv)); |
| 2734 | ASSERT_EQUALS(2, settings->rules.size()); |
| 2735 | auto it = settings->rules.cbegin(); |
| 2736 | ASSERT_EQUALS_ENUM(Regex::Engine::Pcre, it->regex->engine()); |
| 2737 | ASSERT_EQUALS("raw", it->tokenlist); |
| 2738 | ASSERT_EQUALS(".+", it->pattern); |
| 2739 | ASSERT_EQUALS_ENUM(Severity::error, it->severity); |
| 2740 | ASSERT_EQUALS("ruleId1", it->id); |
| 2741 | ASSERT_EQUALS("ruleSummary1", it->summary); |
| 2742 | ++it; |
| 2743 | ASSERT_EQUALS_ENUM(Regex::Engine::Pcre, it->regex->engine()); |
| 2744 | ASSERT_EQUALS("define", it->tokenlist); |
| 2745 | ASSERT_EQUALS(".*", it->pattern); |
| 2746 | ASSERT_EQUALS_ENUM(Severity::warning, it->severity); |
| 2747 | ASSERT_EQUALS("ruleId2", it->id); |
| 2748 | ASSERT_EQUALS("ruleSummary2", it->summary); |
| 2749 | } |
| 2750 | |
| 2751 | void ruleFileSingle() { |
| 2752 | REDIRECT; |