| 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"));
|
|
|