OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <algorithm> | 5 #include <algorithm> |
6 | 6 |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 #include "tools/gn/runtime_deps.h" | 8 #include "tools/gn/runtime_deps.h" |
9 #include "tools/gn/target.h" | 9 #include "tools/gn/target.h" |
10 #include "tools/gn/test_with_scope.h" | 10 #include "tools/gn/test_with_scope.h" |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 EXPECT_TRUE(std::find(result.begin(), result.end(), | 233 EXPECT_TRUE(std::find(result.begin(), result.end(), |
234 MakePair("../../dep_copy/data/", &dep_copy)) != | 234 MakePair("../../dep_copy/data/", &dep_copy)) != |
235 result.end()) << GetVectorDescription(result); | 235 result.end()) << GetVectorDescription(result); |
236 | 236 |
237 // Explicitly asking for the runtime deps of an action target only includes | 237 // Explicitly asking for the runtime deps of an action target only includes |
238 // the data and not all outputs. | 238 // the data and not all outputs. |
239 result = ComputeRuntimeDeps(&dep); | 239 result = ComputeRuntimeDeps(&dep); |
240 ASSERT_EQ(1u, result.size()); | 240 ASSERT_EQ(1u, result.size()); |
241 EXPECT_TRUE(MakePair("../../dep.data", &dep) == result[0]); | 241 EXPECT_TRUE(MakePair("../../dep.data", &dep) == result[0]); |
242 } | 242 } |
| 243 |
| 244 // Tests that a dependency duplicated in regular and data deps is processed |
| 245 // as a data dep. |
| 246 TEST(RuntimeDeps, Dupe) { |
| 247 TestWithScope setup; |
| 248 Err err; |
| 249 |
| 250 Target action(setup.settings(), Label(SourceDir("//"), "action")); |
| 251 InitTargetWithType(setup, &action, Target::ACTION); |
| 252 action.action_values().outputs() = |
| 253 SubstitutionList::MakeForTest("//action.output"); |
| 254 ASSERT_TRUE(action.OnResolved(&err)); |
| 255 |
| 256 Target target(setup.settings(), Label(SourceDir("//"), "foo")); |
| 257 InitTargetWithType(setup, &target, Target::EXECUTABLE); |
| 258 target.private_deps().push_back(LabelTargetPair(&action)); |
| 259 target.data_deps().push_back(LabelTargetPair(&action)); |
| 260 ASSERT_TRUE(target.OnResolved(&err)); |
| 261 |
| 262 // The results should be the executable and the copy output. |
| 263 std::vector<std::pair<OutputFile, const Target*>> result = |
| 264 ComputeRuntimeDeps(&target); |
| 265 EXPECT_TRUE(std::find(result.begin(), result.end(), |
| 266 MakePair("../../action.output", &action)) != |
| 267 result.end()) << GetVectorDescription(result); |
| 268 } |
OLD | NEW |