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

Side by Side Diff: tools/gn/loader_unittest.cc

Issue 318383003: Improve error messages and reporting in GN (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tools/gn/loader.cc ('k') | tools/gn/setup.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <map> 5 #include <map>
6 #include <utility> 6 #include <utility>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/linked_ptr.h" 10 #include "base/memory/linked_ptr.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 139
140 // The default toolchain needs to be set by the build config file. 140 // The default toolchain needs to be set by the build config file.
141 mock_ifm_.AddCannedResponse(build_config, 141 mock_ifm_.AddCannedResponse(build_config,
142 "set_default_toolchain(\"//tc:tc\")"); 142 "set_default_toolchain(\"//tc:tc\")");
143 143
144 loader->set_async_load_file(mock_ifm_.GetCallback()); 144 loader->set_async_load_file(mock_ifm_.GetCallback());
145 145
146 // Request the root build file be loaded. This should kick off the default 146 // Request the root build file be loaded. This should kick off the default
147 // build config loading. 147 // build config loading.
148 SourceFile root_build("//BUILD.gn"); 148 SourceFile root_build("//BUILD.gn");
149 loader->Load(root_build, Label()); 149 loader->Load(root_build, LocationRange(), Label());
150 EXPECT_TRUE(mock_ifm_.HasOnePending(build_config)); 150 EXPECT_TRUE(mock_ifm_.HasOnePending(build_config));
151 151
152 // Completing the build config load should kick off the root build file load. 152 // Completing the build config load should kick off the root build file load.
153 mock_ifm_.IssueAllPending(); 153 mock_ifm_.IssueAllPending();
154 scheduler_.main_loop()->RunUntilIdle(); 154 scheduler_.main_loop()->RunUntilIdle();
155 EXPECT_TRUE(mock_ifm_.HasOnePending(root_build)); 155 EXPECT_TRUE(mock_ifm_.HasOnePending(root_build));
156 156
157 // Load the root build file. 157 // Load the root build file.
158 mock_ifm_.IssueAllPending(); 158 mock_ifm_.IssueAllPending();
159 scheduler_.main_loop()->RunUntilIdle(); 159 scheduler_.main_loop()->RunUntilIdle();
160 160
161 // Schedule some other file to load in another toolchain. 161 // Schedule some other file to load in another toolchain.
162 Label second_tc(SourceDir("//tc2/"), "tc2"); 162 Label second_tc(SourceDir("//tc2/"), "tc2");
163 SourceFile second_file("//foo/BUILD.gn"); 163 SourceFile second_file("//foo/BUILD.gn");
164 loader->Load(second_file, second_tc); 164 loader->Load(second_file, LocationRange(), second_tc);
165 EXPECT_TRUE(mock_ifm_.HasOnePending(SourceFile("//tc2/BUILD.gn"))); 165 EXPECT_TRUE(mock_ifm_.HasOnePending(SourceFile("//tc2/BUILD.gn")));
166 166
167 // Running the toolchain file should schedule the build config file to load 167 // Running the toolchain file should schedule the build config file to load
168 // for that toolchain. 168 // for that toolchain.
169 mock_ifm_.IssueAllPending(); 169 mock_ifm_.IssueAllPending();
170 scheduler_.main_loop()->RunUntilIdle(); 170 scheduler_.main_loop()->RunUntilIdle();
171 171
172 // We have to tell it we have a toolchain definition now (normally the 172 // We have to tell it we have a toolchain definition now (normally the
173 // builder would do this). 173 // builder would do this).
174 const Settings* default_settings = loader->GetToolchainSettings(Label()); 174 const Settings* default_settings = loader->GetToolchainSettings(Label());
175 Toolchain second_tc_object(default_settings, second_tc); 175 Toolchain second_tc_object(default_settings, second_tc);
176 loader->ToolchainLoaded(&second_tc_object); 176 loader->ToolchainLoaded(&second_tc_object);
177 EXPECT_TRUE(mock_ifm_.HasOnePending(build_config)); 177 EXPECT_TRUE(mock_ifm_.HasOnePending(build_config));
178 178
179 // Scheduling a second file to load in that toolchain should not make it 179 // Scheduling a second file to load in that toolchain should not make it
180 // pending yet (it's waiting for the build config). 180 // pending yet (it's waiting for the build config).
181 SourceFile third_file("//bar/BUILD.gn"); 181 SourceFile third_file("//bar/BUILD.gn");
182 loader->Load(third_file, second_tc); 182 loader->Load(third_file, LocationRange(), second_tc);
183 EXPECT_TRUE(mock_ifm_.HasOnePending(build_config)); 183 EXPECT_TRUE(mock_ifm_.HasOnePending(build_config));
184 184
185 // Running the build config file should make our third file pending. 185 // Running the build config file should make our third file pending.
186 mock_ifm_.IssueAllPending(); 186 mock_ifm_.IssueAllPending();
187 scheduler_.main_loop()->RunUntilIdle(); 187 scheduler_.main_loop()->RunUntilIdle();
188 EXPECT_TRUE(mock_ifm_.HasTwoPending(second_file, third_file)); 188 EXPECT_TRUE(mock_ifm_.HasTwoPending(second_file, third_file));
189 189
190 EXPECT_FALSE(scheduler_.is_failed()); 190 EXPECT_FALSE(scheduler_.is_failed());
191 } 191 }
OLDNEW
« no previous file with comments | « tools/gn/loader.cc ('k') | tools/gn/setup.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698