Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(361)

Unified Diff: tools/gn/header_checker_unittest.cc

Issue 516683002: Add GN variables for controlling header checking. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@desc
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/gn/header_checker_unittest.cc
diff --git a/tools/gn/header_checker_unittest.cc b/tools/gn/header_checker_unittest.cc
index 27b92af2206d3a5bce1dd0e5cacf73eba94ecd1a..0dae4b4d6b4997151d5a40b0f84edea83692df1b 100644
--- a/tools/gn/header_checker_unittest.cc
+++ b/tools/gn/header_checker_unittest.cc
@@ -226,6 +226,33 @@ TEST_F(HeaderCheckerTest, CheckInclude) {
}
}
+// Checks that the allow_circular_includes_from list works.
+TEST_F(HeaderCheckerTest, CheckIncludeAllowCircular) {
+ InputFile input_file(SourceFile("//some_file.cc"));
+ input_file.SetContents(std::string());
+ LocationRange range; // Dummy value.
+
+ // Add an include file to A.
+ SourceFile a_public("//a_public.h");
+ a_.sources().push_back(a_public);
+
+ scoped_refptr<HeaderChecker> checker(
+ new HeaderChecker(setup_.build_settings(), targets_));
+
+ // A depends on B. So B normally can't include headers from A.
+ Err err;
+ EXPECT_FALSE(checker->CheckInclude(&b_, input_file, a_public, range, &err));
+ EXPECT_TRUE(err.has_error());
+
+ // Add an allow_circular_includes_from on A that lists B.
+ a_.allow_circular_includes_from().insert(b_.label());
+
+ // Now the include from B to A should be allowed.
+ err = Err();
+ EXPECT_TRUE(checker->CheckInclude(&b_, input_file, a_public, range, &err));
+ EXPECT_FALSE(err.has_error());
+}
+
TEST_F(HeaderCheckerTest, GetDependentConfigChainProblemIndex) {
// Assume we have a chain A -> B -> C -> D.
Target target_a(setup_.settings(), Label(SourceDir("//a/"), "a"));

Powered by Google App Engine
This is Rietveld 408576698