forked from OSchip/llvm-project
[clang][cli] CompilerInvocationTest: check arg parsing does not produce diagnostics
Depends on D92828. Reviewed By: dexonsmith Differential Revision: https://reviews.llvm.org/D92829
This commit is contained in:
parent
4894e423e7
commit
03692bae1f
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include "clang/Frontend/CompilerInvocation.h"
|
||||
#include "clang/Frontend/CompilerInstance.h"
|
||||
#include "clang/Frontend/TextDiagnosticBuffer.h"
|
||||
#include "llvm/Support/Host.h"
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
|
@ -32,7 +33,9 @@ public:
|
|||
}
|
||||
|
||||
CommandLineTest()
|
||||
: Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions())) {}
|
||||
: Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions(),
|
||||
new TextDiagnosticBuffer())) {
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(CommandLineTest, OptIsInitializedWithCustomDefaultValue) {
|
||||
|
@ -40,6 +43,8 @@ TEST_F(CommandLineTest, OptIsInitializedWithCustomDefaultValue) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
ASSERT_TRUE(Invocation.getFrontendOpts().UseTemporary);
|
||||
}
|
||||
|
||||
|
@ -48,6 +53,8 @@ TEST_F(CommandLineTest, OptOfNegativeFlagIsPopulatedWithFalse) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
ASSERT_FALSE(Invocation.getFrontendOpts().UseTemporary);
|
||||
}
|
||||
|
||||
|
@ -56,6 +63,8 @@ TEST_F(CommandLineTest, OptsOfImpliedPositiveFlagArePopulatedWithTrue) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
// Explicitly provided flag.
|
||||
ASSERT_TRUE(Invocation.getLangOpts()->CLUnsafeMath);
|
||||
|
||||
|
@ -72,6 +81,8 @@ TEST_F(CommandLineTest, CanGenerateCC1CommandLineFlag) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
ASSERT_THAT(GeneratedArgs, Contains(StrEq("-fmodules-strict-context-hash")));
|
||||
|
@ -83,6 +94,8 @@ TEST_F(CommandLineTest, CanGenerateCC1CommandLineSeparate) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
ASSERT_THAT(GeneratedArgs, Contains(StrEq(TripleCStr)));
|
||||
|
@ -95,6 +108,8 @@ TEST_F(CommandLineTest, CanGenerateCC1CommandLineSeparateRequiredPresent) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
// Triple should always be emitted even if it is the default
|
||||
|
@ -108,6 +123,8 @@ TEST_F(CommandLineTest, CanGenerateCC1CommandLineSeparateRequiredAbsent) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
// Triple should always be emitted even if it is the default
|
||||
|
@ -119,6 +136,8 @@ TEST_F(CommandLineTest, CanGenerateCC1CommandLineSeparateEnumNonDefault) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
// Non default relocation model.
|
||||
|
@ -130,6 +149,8 @@ TEST_F(CommandLineTest, CanGenerateCC1COmmandLineSeparateEnumDefault) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
// Default relocation model.
|
||||
|
@ -141,6 +162,8 @@ TEST_F(CommandLineTest, NotPresentNegativeFlagNotGenerated) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
ASSERT_THAT(GeneratedArgs, Not(Contains(StrEq("-fno-temp-file"))));
|
||||
|
@ -151,6 +174,8 @@ TEST_F(CommandLineTest, PresentNegativeFlagGenerated) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
ASSERT_THAT(GeneratedArgs, Contains(StrEq("-fno-temp-file")));
|
||||
|
@ -161,6 +186,8 @@ TEST_F(CommandLineTest, NotPresentAndNotImpliedNotGenerated) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
// Missing options are not generated.
|
||||
|
@ -175,6 +202,8 @@ TEST_F(CommandLineTest, NotPresentAndImpliedNotGenerated) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
// Missing options that were implied are not generated.
|
||||
|
@ -189,6 +218,8 @@ TEST_F(CommandLineTest, PresentAndImpliedNotGenerated) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
// Present options that were also implied are not generated.
|
||||
|
@ -202,6 +233,8 @@ TEST_F(CommandLineTest, PresentAndNotImpliedGenerated) {
|
|||
|
||||
CompilerInvocation::CreateFromArgs(Invocation, Args, *Diags);
|
||||
|
||||
ASSERT_FALSE(Diags->hasErrorOccurred());
|
||||
|
||||
Invocation.generateCC1CommandLine(GeneratedArgs, *this);
|
||||
|
||||
// Present options that were not implied are generated.
|
||||
|
|
Loading…
Reference in New Issue