|
17 | 17 | */ |
18 | 18 |
|
19 | 19 | #include "cmdlineparser.h" |
| 20 | +#include "cppcheckexecutor.h" |
20 | 21 | #include "errortypes.h" |
21 | 22 | #include "platform.h" |
22 | 23 | #include "redirect.h" |
@@ -131,6 +132,14 @@ class TestCmdlineParser : public TestFixture { |
131 | 132 | TEST_CASE(errorlistverbose1); |
132 | 133 | TEST_CASE(errorlistverbose2); |
133 | 134 | TEST_CASE(ignorepathsnopath); |
| 135 | + TEST_CASE(exceptionhandling); |
| 136 | + TEST_CASE(exceptionhandling2); |
| 137 | + TEST_CASE(exceptionhandling3); |
| 138 | + TEST_CASE(exceptionhandlingInvalid); |
| 139 | + TEST_CASE(exceptionhandlingInvalid2); |
| 140 | + TEST_CASE(clang); |
| 141 | + TEST_CASE(clang2); |
| 142 | + TEST_CASE(clangInvalid); |
134 | 143 |
|
135 | 144 | // TODO |
136 | 145 | // Disabling these tests since they use relative paths to the |
@@ -965,6 +974,77 @@ class TestCmdlineParser : public TestFixture { |
965 | 974 | ASSERT_EQUALS(0, parser.getIgnoredPaths().size()); |
966 | 975 | } |
967 | 976 |
|
| 977 | + void exceptionhandling() { |
| 978 | + REDIRECT; |
| 979 | + const char * const argv[] = {"cppcheck", "--exception-handling"}; |
| 980 | + settings.exceptionHandling = false; |
| 981 | + CppCheckExecutor::setExceptionOutput(stderr); |
| 982 | + ASSERT(defParser.parseFromArgs(2, argv)); |
| 983 | + ASSERT(settings.exceptionHandling); |
| 984 | + ASSERT_EQUALS(stderr, CppCheckExecutor::getExceptionOutput()); |
| 985 | + } |
| 986 | + |
| 987 | + void exceptionhandling2() { |
| 988 | + REDIRECT; |
| 989 | + const char * const argv[] = {"cppcheck", "--exception-handling=stderr"}; |
| 990 | + settings.exceptionHandling = false; |
| 991 | + CppCheckExecutor::setExceptionOutput(stdout); |
| 992 | + ASSERT(defParser.parseFromArgs(2, argv)); |
| 993 | + ASSERT(settings.exceptionHandling); |
| 994 | + ASSERT_EQUALS(stderr, CppCheckExecutor::getExceptionOutput()); |
| 995 | + } |
| 996 | + |
| 997 | + void exceptionhandling3() { |
| 998 | + REDIRECT; |
| 999 | + const char * const argv[] = {"cppcheck", "--exception-handling=stdout"}; |
| 1000 | + settings.exceptionHandling = false; |
| 1001 | + CppCheckExecutor::setExceptionOutput(stderr); |
| 1002 | + ASSERT(defParser.parseFromArgs(2, argv)); |
| 1003 | + ASSERT(settings.exceptionHandling); |
| 1004 | + ASSERT_EQUALS(stdout, CppCheckExecutor::getExceptionOutput()); |
| 1005 | + } |
| 1006 | + |
| 1007 | + void exceptionhandlingInvalid() { |
| 1008 | + REDIRECT; |
| 1009 | + const char * const argv[] = {"cppcheck", "--exception-handling=exfile"}; |
| 1010 | + ASSERT_EQUALS(false, defParser.parseFromArgs(2, argv)); |
| 1011 | + ASSERT_EQUALS("cppcheck: error: invalid '--exception-handling' argument\n", GET_REDIRECT_OUTPUT); |
| 1012 | + } |
| 1013 | + |
| 1014 | + void exceptionhandlingInvalid2() { |
| 1015 | + REDIRECT; |
| 1016 | + const char * const argv[] = {"cppcheck", "--exception-handling-foo"}; |
| 1017 | + ASSERT_EQUALS(false, defParser.parseFromArgs(2, argv)); |
| 1018 | + ASSERT_EQUALS("cppcheck: error: unrecognized command line option: \"--exception-handling-foo\".\n", GET_REDIRECT_OUTPUT); |
| 1019 | + } |
| 1020 | + |
| 1021 | + void clang() { |
| 1022 | + REDIRECT; |
| 1023 | + const char * const argv[] = {"cppcheck", "--clang"}; |
| 1024 | + settings.clang = false; |
| 1025 | + settings.clangExecutable = "exe"; |
| 1026 | + ASSERT(defParser.parseFromArgs(2, argv)); |
| 1027 | + ASSERT(settings.clang); |
| 1028 | + ASSERT_EQUALS("exe", settings.clangExecutable); |
| 1029 | + } |
| 1030 | + |
| 1031 | + void clang2() { |
| 1032 | + REDIRECT; |
| 1033 | + const char * const argv[] = {"cppcheck", "--clang=clang-14"}; |
| 1034 | + settings.clang = false; |
| 1035 | + settings.clangExecutable = ""; |
| 1036 | + ASSERT(defParser.parseFromArgs(2, argv)); |
| 1037 | + ASSERT(settings.clang); |
| 1038 | + ASSERT_EQUALS("clang-14", settings.clangExecutable); |
| 1039 | + } |
| 1040 | + |
| 1041 | + void clangInvalid() { |
| 1042 | + REDIRECT; |
| 1043 | + const char * const argv[] = {"cppcheck", "--clang-foo"}; |
| 1044 | + ASSERT_EQUALS(false, defParser.parseFromArgs(2, argv)); |
| 1045 | + ASSERT_EQUALS("cppcheck: error: unrecognized command line option: \"--clang-foo\".\n", GET_REDIRECT_OUTPUT); |
| 1046 | + } |
| 1047 | + |
968 | 1048 | /* |
969 | 1049 | void ignorepaths1() { |
970 | 1050 | REDIRECT; |
|
0 commit comments