Ah, I find that the test passes if I remove the compile_commands.json file from my build directory (I have Ninja configured to generate a compile_commands.json file).
Looks like what happens is it finds the compilation database and fails hard when the database doesn't contain a compile command for the file in question. If the database is not found, it falls back to some basic command behavior, perhaps? Is there some way this test could be fixed to cope with this, otherwise it seems to get in the way of people actually using clang tools in their LLVM/Clang build environment? On Tue, Jun 13, 2017 at 7:41 AM Serge Pavlov <sepavl...@gmail.com> wrote: > I cannot reproduce such fail, so I can only guess how changes made in > https://reviews.llvm.org/rL303756 and https://reviews.llvm.org/rL303741 > could cause such problem. Behavior of `Driver::BuildCompilation` is changed > so that it returns null pointer if errors occur during driver argument > parse. It is called in `CompilationDatabase.cpp` from > `stripPositionalArgs`. The call stack at this point is: > stripPositionalArgs > clang::tooling::FixedCompilationDatabase::loadFromCommandLine > clang::tooling::CommonOptionsParser::CommonOptionsParser > clang::tidy::clangTidyMain > main > `FixedCompilationDatabase::loadFromCommandLine` returns null and > CommonOptionsParser uses another method to create compilation database. The > output "Compile command not found" means that no input file were found in > `ClangTool::run`. Maybe some file names are nulls? > > > Thanks, > --Serge > > 2017-06-13 3:42 GMT+07:00 David Blaikie <dblai...@gmail.com>: > >> I've been seeing errors from this test recently: >> >> Command Output (stderr): >> -- >> 1 error generated. >> Error while processing >> /usr/local/google/home/blaikie/dev/llvm/src/tools/clang/tools/extra/test/clang-tidy/diagnostic.cpp.nonexistent.cpp. >> /usr/local/google/home/blaikie/dev/llvm/src/tools/clang/tools/extra/test/clang-tidy/diagnostic.cpp:10:12: >> error: expected string not found in input >> // CHECK2: :[[@LINE+2]]:9: warning: implicit conversion from 'double' to >> 'int' changes value from 1.5 to 1 [clang-diagnostic-literal-conversion] >> ^ >> <stdin>:2:1: note: scanning from here >> Skipping >> /usr/local/google/home/blaikie/dev/llvm/src/tools/clang/tools/extra/test/clang-tidy/diagnostic.cpp. >> Compile command not found. >> ^ >> <stdin>:2:1: note: with expression "@LINE+2" equal to "12" >> Skipping >> /usr/local/google/home/blaikie/dev/llvm/src/tools/clang/tools/extra/test/clang-tidy/diagnostic.cpp. >> Compile command not found. >> ^ >> >> >> Specifically, the output is: >> $ ./bin/clang-tidy >> -checks='-*,clang-diagnostic-*,google-explicit-constructor' >> /usr/local/google/home/blaikie/dev/llvm/src/tools/clang/tools/extra/test/clang-tidy/diagnostic.cpp >> -- -fan-unknown-option 2>&1 error: unknown >> argument: '-fan-unknown-option' >> Skipping >> /usr/local/google/home/blaikie/dev/llvm/src/tools/clang/tools/extra/test/clang-tidy/diagnostic.cpp. >> Compile command not found. >> >> >> Does this look like it might be related to any of your changes in this >> area? Perhaps the error due to unknown argument is causing clang-tidy not >> to continue on to run the check & report the warning? >> >> >> On Wed, May 24, 2017 at 3:51 AM Serge Pavlov via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> >>> Author: sepavloff >>> Date: Wed May 24 05:50:56 2017 >>> New Revision: 303735 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=303735&view=rev >>> Log: >>> Modify test so that it looks for patterns in stderr as well >>> >>> With the change https://reviews.llvm.org/D33013 driver will not build >>> compilation object if command line is invalid, in particular, if >>> unrecognized option is provided. In such cases it will prints diagnostics >>> on stderr. The test 'clang-tidy/diagnostic.cpp' checks reaction on >>> unrecognized option and will fail when D33013 is applied because it >>> checks >>> only stdout for test patterns and expects the name of diagnostic category >>> prepared by clang-tidy. With this change the test makes more general >>> check >>> and must work in either case. >>> >>> Differential Revision: https://reviews.llvm.org/D33173 >>> >>> Modified: >>> clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp >>> >>> Modified: clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp?rev=303735&r1=303734&r2=303735&view=diff >>> >>> ============================================================================== >>> --- clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp (original) >>> +++ clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp Wed May 24 >>> 05:50:56 2017 >>> @@ -1,11 +1,11 @@ >>> // RUN: clang-tidy -checks='-*,modernize-use-override' >>> %s.nonexistent.cpp -- | FileCheck -check-prefix=CHECK1 >>> -implicit-check-not='{{warning:|error:}}' %s >>> -// RUN: clang-tidy >>> -checks='-*,clang-diagnostic-*,google-explicit-constructor' %s -- >>> -fan-unknown-option | FileCheck -check-prefix=CHECK2 >>> -implicit-check-not='{{warning:|error:}}' %s >>> -// RUN: clang-tidy >>> -checks='-*,google-explicit-constructor,clang-diagnostic-literal-conversion' >>> %s -- -fan-unknown-option | FileCheck -check-prefix=CHECK3 >>> -implicit-check-not='{{warning:|error:}}' %s >>> +// RUN: clang-tidy >>> -checks='-*,clang-diagnostic-*,google-explicit-constructor' %s -- >>> -fan-unknown-option 2>&1 | FileCheck -check-prefix=CHECK2 >>> -implicit-check-not='{{warning:|error:}}' %s >>> +// RUN: clang-tidy >>> -checks='-*,google-explicit-constructor,clang-diagnostic-literal-conversion' >>> %s -- -fan-unknown-option 2>&1 | FileCheck -check-prefix=CHECK3 >>> -implicit-check-not='{{warning:|error:}}' %s >>> // RUN: clang-tidy >>> -checks='-*,modernize-use-override,clang-diagnostic-macro-redefined' %s -- >>> -DMACRO_FROM_COMMAND_LINE | FileCheck -check-prefix=CHECK4 >>> -implicit-check-not='{{warning:|error:}}' %s >>> >>> // CHECK1: error: error reading '{{.*}}.nonexistent.cpp' >>> [clang-diagnostic-error] >>> -// CHECK2: error: unknown argument: '-fan-unknown-option' >>> [clang-diagnostic-error] >>> -// CHECK3: error: unknown argument: '-fan-unknown-option' >>> [clang-diagnostic-error] >>> +// CHECK2: error: unknown argument: '-fan-unknown-option' >>> +// CHECK3: error: unknown argument: '-fan-unknown-option' >>> >>> // CHECK2: :[[@LINE+2]]:9: warning: implicit conversion from 'double' >>> to 'int' changes value from 1.5 to 1 [clang-diagnostic-literal-conversion] >>> // CHECK3: :[[@LINE+1]]:9: warning: implicit conversion from 'double' >>> to 'int' changes value >>> >>> >>> _______________________________________________ >>> cfe-commits mailing list >>> cfe-commits@lists.llvm.org >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits