OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
6 #include "tools/gn/builder.h" | 6 #include "tools/gn/builder.h" |
7 #include "tools/gn/loader.h" | 7 #include "tools/gn/loader.h" |
8 #include "tools/gn/target.h" | 8 #include "tools/gn/target.h" |
9 #include "tools/gn/test_with_scope.h" | 9 #include "tools/gn/test_with_scope.h" |
10 #include "tools/gn/toolchain.h" | 10 #include "tools/gn/toolchain.h" |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 Settings settings_; | 82 Settings settings_; |
83 Scope scope_; | 83 Scope scope_; |
84 }; | 84 }; |
85 | 85 |
86 } // namespace | 86 } // namespace |
87 | 87 |
88 TEST_F(BuilderTest, BasicDeps) { | 88 TEST_F(BuilderTest, BasicDeps) { |
89 SourceDir toolchain_dir = settings_.toolchain_label().dir(); | 89 SourceDir toolchain_dir = settings_.toolchain_label().dir(); |
90 std::string toolchain_name = settings_.toolchain_label().name(); | 90 std::string toolchain_name = settings_.toolchain_label().name(); |
91 | 91 |
92 DefineToolchain(); | |
93 BuilderRecord* toolchain_record = | |
94 builder_->GetRecord(settings_.toolchain_label()); | |
95 ASSERT_TRUE(toolchain_record); | |
96 EXPECT_EQ(BuilderRecord::ITEM_TOOLCHAIN, toolchain_record->type()); | |
97 | |
98 // Construct a dependency chain: A -> B -> C. Define A first with a | 92 // Construct a dependency chain: A -> B -> C. Define A first with a |
99 // forward-reference to B, then C, then B to test the different orders that | 93 // forward-reference to B, then C, then B to test the different orders that |
100 // the dependencies are hooked up. | 94 // the dependencies are hooked up. |
101 Label a_label(SourceDir("//a/"), "a", toolchain_dir, toolchain_name); | 95 Label a_label(SourceDir("//a/"), "a", toolchain_dir, toolchain_name); |
102 Label b_label(SourceDir("//b/"), "b", toolchain_dir, toolchain_name); | 96 Label b_label(SourceDir("//b/"), "b", toolchain_dir, toolchain_name); |
103 Label c_label(SourceDir("//c/"), "c", toolchain_dir, toolchain_name); | 97 Label c_label(SourceDir("//c/"), "c", toolchain_dir, toolchain_name); |
104 | 98 |
105 // The builder will take ownership of the pointers. | 99 // The builder will take ownership of the pointers. |
106 Target* a = new Target(&settings_, a_label); | 100 Target* a = new Target(&settings_, a_label); |
107 a->deps().push_back(LabelTargetPair(b_label)); | 101 a->deps().push_back(LabelTargetPair(b_label)); |
108 a->set_output_type(Target::EXECUTABLE); | 102 a->set_output_type(Target::EXECUTABLE); |
109 builder_->ItemDefined(scoped_ptr<Item>(a)); | 103 builder_->ItemDefined(scoped_ptr<Item>(a)); |
110 | 104 |
111 // Should have requested that B and the toolchain is loaded. | 105 // Should have requested that B and the toolchain is loaded. |
112 EXPECT_TRUE(loader_->HasLoadedTwo(SourceFile("//tc/BUILD.gn"), | 106 EXPECT_TRUE(loader_->HasLoadedTwo(SourceFile("//tc/BUILD.gn"), |
113 SourceFile("//b/BUILD.gn"))); | 107 SourceFile("//b/BUILD.gn"))); |
114 | 108 |
| 109 // Define the toolchain. |
| 110 DefineToolchain(); |
| 111 BuilderRecord* toolchain_record = |
| 112 builder_->GetRecord(settings_.toolchain_label()); |
| 113 ASSERT_TRUE(toolchain_record); |
| 114 EXPECT_EQ(BuilderRecord::ITEM_TOOLCHAIN, toolchain_record->type()); |
| 115 |
115 // A should be unresolved with an item | 116 // A should be unresolved with an item |
116 BuilderRecord* a_record = builder_->GetRecord(a_label); | 117 BuilderRecord* a_record = builder_->GetRecord(a_label); |
117 EXPECT_TRUE(a_record->item()); | 118 EXPECT_TRUE(a_record->item()); |
118 EXPECT_FALSE(a_record->resolved()); | 119 EXPECT_FALSE(a_record->resolved()); |
119 EXPECT_FALSE(a_record->can_resolve()); | 120 EXPECT_FALSE(a_record->can_resolve()); |
120 | 121 |
121 // B should be unresolved, have no item, and no deps. | 122 // B should be unresolved, have no item, and no deps. |
122 BuilderRecord* b_record = builder_->GetRecord(b_label); | 123 BuilderRecord* b_record = builder_->GetRecord(b_label); |
123 EXPECT_FALSE(b_record->item()); | 124 EXPECT_FALSE(b_record->item()); |
124 EXPECT_FALSE(b_record->resolved()); | 125 EXPECT_FALSE(b_record->resolved()); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 a->set_output_type(Target::EXECUTABLE); | 208 a->set_output_type(Target::EXECUTABLE); |
208 builder_->ItemDefined(scoped_ptr<Item>(a)); | 209 builder_->ItemDefined(scoped_ptr<Item>(a)); |
209 | 210 |
210 // A should have the generate bit set since it's in the default toolchain. | 211 // A should have the generate bit set since it's in the default toolchain. |
211 BuilderRecord* a_record = builder_->GetRecord(a_label); | 212 BuilderRecord* a_record = builder_->GetRecord(a_label); |
212 EXPECT_TRUE(a_record->should_generate()); | 213 EXPECT_TRUE(a_record->should_generate()); |
213 | 214 |
214 // It should have gotten pushed to B. | 215 // It should have gotten pushed to B. |
215 EXPECT_TRUE(b_record->should_generate()); | 216 EXPECT_TRUE(b_record->should_generate()); |
216 } | 217 } |
OLD | NEW |