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

Unified Diff: tools/gn/header_checker_unittest.cc

Issue 229423002: Improve public header file checking (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: include static cast for 64 bit Created 6 years, 8 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
« no previous file with comments | « tools/gn/header_checker.cc ('k') | tools/gn/input_conversion.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/header_checker_unittest.cc
diff --git a/tools/gn/header_checker_unittest.cc b/tools/gn/header_checker_unittest.cc
index 90e4165529c8db9be36a9b240ce351d72a1718b8..05c5f647c5cd4b717a381ef01a405d5f0c04737e 100644
--- a/tools/gn/header_checker_unittest.cc
+++ b/tools/gn/header_checker_unittest.cc
@@ -15,12 +15,17 @@ namespace {
class HeaderCheckerTest : public testing::Test {
public:
HeaderCheckerTest()
- : a_(setup_.settings(), Label(SourceDir("//"), "a")),
- b_(setup_.settings(), Label(SourceDir("//"), "a")),
- c_(setup_.settings(), Label(SourceDir("//"), "c")) {
+ : a_(setup_.settings(), Label(SourceDir("//a/"), "a")),
+ b_(setup_.settings(), Label(SourceDir("//b/"), "a")),
+ c_(setup_.settings(), Label(SourceDir("//c/"), "c")) {
a_.deps().push_back(LabelTargetPair(&b_));
b_.deps().push_back(LabelTargetPair(&c_));
+ // Start with all public visibility.
+ a_.visibility().SetPublic();
+ b_.visibility().SetPublic();
+ c_.visibility().SetPublic();
+
targets_.push_back(&a_);
targets_.push_back(&b_);
targets_.push_back(&c_);
@@ -53,6 +58,10 @@ TEST_F(HeaderCheckerTest, IsDependencyOf) {
}
TEST_F(HeaderCheckerTest, CheckInclude) {
+ InputFile input_file(SourceFile("//some_file.cc"));
+ input_file.SetContents(std::string());
+ LocationRange range; // Dummy value.
+
// Add a disconnected target d with a header to check that you have to have
// to depend on a target listing a header.
Target d(setup_.settings(), Label(SourceDir("//"), "d"));
@@ -78,25 +87,31 @@ TEST_F(HeaderCheckerTest, CheckInclude) {
// A file in target A can't include a header from D because A has no
// dependency on D.
Err err;
- SourceFile source_file("//some_file.cc");
- EXPECT_FALSE(checker->CheckInclude(&a_, source_file, d_header, &err));
+ EXPECT_FALSE(checker->CheckInclude(&a_, input_file, d_header, range, &err));
EXPECT_TRUE(err.has_error());
// A can include the public header in B.
err = Err();
- EXPECT_TRUE(checker->CheckInclude(&a_, source_file, b_public, &err));
+ EXPECT_TRUE(checker->CheckInclude(&a_, input_file, b_public, range, &err));
EXPECT_FALSE(err.has_error());
// Check A depending on the public and private headers in C.
err = Err();
- EXPECT_TRUE(checker->CheckInclude(&a_, source_file, c_public, &err));
+ EXPECT_TRUE(checker->CheckInclude(&a_, input_file, c_public, range, &err));
EXPECT_FALSE(err.has_error());
- EXPECT_FALSE(checker->CheckInclude(&a_, source_file, c_private, &err));
+ EXPECT_FALSE(checker->CheckInclude(&a_, input_file, c_private, range, &err));
EXPECT_TRUE(err.has_error());
// A can depend on a random file unknown to the build.
err = Err();
- EXPECT_TRUE(checker->CheckInclude(&a_, source_file, SourceFile("//random.h"),
- &err));
+ EXPECT_TRUE(checker->CheckInclude(&a_, input_file, SourceFile("//random.h"),
+ range, &err));
EXPECT_FALSE(err.has_error());
+
+ // If C is not visible from A, A can't include public headers even if there
+ // is a dependency path.
+ c_.visibility().SetPrivate(c_.label().dir());
+ err = Err();
+ EXPECT_FALSE(checker->CheckInclude(&a_, input_file, c_public, range, &err));
+ EXPECT_TRUE(err.has_error());
}
« no previous file with comments | « tools/gn/header_checker.cc ('k') | tools/gn/input_conversion.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698