[clang-tools-extra] r303735 - Modify test so that it looks for patterns in stderr as well

Serge Pavlov via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 13 07:41:27 PDT 2017


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 <dblaikie at 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 at 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 at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170613/7e74613b/attachment-0001.html>


More information about the cfe-commits mailing list