Index: tools/gn/runtime_deps_unittest.cc |
diff --git a/tools/gn/runtime_deps_unittest.cc b/tools/gn/runtime_deps_unittest.cc |
index 8b68bd85c4d0590d2586b1f1f377fd45289a6996..c4940a962bcdb09cb50516f21322373fc07b82f9 100644 |
--- a/tools/gn/runtime_deps_unittest.cc |
+++ b/tools/gn/runtime_deps_unittest.cc |
@@ -268,6 +268,8 @@ TEST(RuntimeDeps, CreateBundle) { |
// Dependency hierarchy: |
// main(exe) -> dep(bundle) -> dep(shared_library) -> dep(source set) |
// -> dep(bundle_data) -> dep(loadable_module) |
+ // -> data(lm.data) |
+ // -> datadep(datadep) -> data(dd.data) |
const SourceDir source_dir("//"); |
const std::string& build_dir = setup.build_settings()->build_dir().value(); |
@@ -275,6 +277,7 @@ TEST(RuntimeDeps, CreateBundle) { |
Target loadable_module(setup.settings(), |
Label(source_dir, "loadable_module")); |
InitTargetWithType(setup, &loadable_module, Target::LOADABLE_MODULE); |
+ loadable_module.data().push_back("//lm.data"); |
ASSERT_TRUE(loadable_module.OnResolved(&err)); |
Target module_data(setup.settings(), Label(source_dir, "module_data")); |
@@ -306,6 +309,11 @@ TEST(RuntimeDeps, CreateBundle) { |
SubstitutionPattern::MakeForTest("{{bundle_executable_dir}}"))); |
ASSERT_TRUE(dylib_data.OnResolved(&err)); |
+ Target data_dep(setup.settings(), Label(source_dir, "datadep")); |
+ InitTargetWithType(setup, &data_dep, Target::EXECUTABLE); |
+ data_dep.data().push_back("//dd.data"); |
+ ASSERT_TRUE(data_dep.OnResolved(&err)); |
+ |
Target bundle(setup.settings(), Label(source_dir, "bundle")); |
InitTargetWithType(setup, &bundle, Target::CREATE_BUNDLE); |
const std::string root_dir(build_dir + "Bundle.framework/Versions/A/"); |
@@ -314,6 +322,8 @@ TEST(RuntimeDeps, CreateBundle) { |
bundle.bundle_data().executable_dir() = SourceDir(root_dir + "MacOS"); |
bundle.private_deps().push_back(LabelTargetPair(&dylib_data)); |
bundle.private_deps().push_back(LabelTargetPair(&module_data)); |
+ bundle.data_deps().push_back(LabelTargetPair(&data_dep)); |
+ bundle.data().push_back("//b.data"); |
ASSERT_TRUE(bundle.OnResolved(&err)); |
Target main(setup.settings(), Label(source_dir, "main")); |
@@ -325,14 +335,27 @@ TEST(RuntimeDeps, CreateBundle) { |
ComputeRuntimeDeps(&main); |
// The result should have deps of main, datadep, final_in.dat |
- ASSERT_EQ(2u, result.size()) << GetVectorDescription(result); |
+ ASSERT_EQ(5u, result.size()) << GetVectorDescription(result); |
// The first one should always be the main exe. |
EXPECT_EQ(MakePair("./main", &main), result[0]); |
- // The second one should be the framework bundle, not its included |
- // loadable_module or its intermediate shared_library. |
- EXPECT_EQ(MakePair("Bundle.framework/", &bundle), result[1]); |
+ // The rest of the ordering is undefined. |
+ |
+ // The framework bundle's internal dependencies should not be incldued. |
+ EXPECT_TRUE(std::find(result.begin(), result.end(), |
+ MakePair("Bundle.framework/", &bundle)) != |
+ result.end()) << GetVectorDescription(result); |
+ // But direct data and data dependencies should be. |
+ EXPECT_TRUE(std::find(result.begin(), result.end(), |
+ MakePair("./datadep", &data_dep)) != |
+ result.end()) << GetVectorDescription(result); |
+ EXPECT_TRUE(std::find(result.begin(), result.end(), |
+ MakePair("../../dd.data", &data_dep)) != |
+ result.end()) << GetVectorDescription(result); |
+ EXPECT_TRUE(std::find(result.begin(), result.end(), |
+ MakePair("../../b.data", &bundle)) != |
+ result.end()) << GetVectorDescription(result); |
} |
// Tests that a dependency duplicated in regular and data deps is processed |