| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <sstream> | 5 #include <sstream> |
| 6 | 6 |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 #include "tools/gn/config.h" | 8 #include "tools/gn/config.h" |
| 9 #include "tools/gn/config_values_extractors.h" | 9 #include "tools/gn/config_values_extractors.h" |
| 10 #include "tools/gn/target.h" | 10 #include "tools/gn/target.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 | 28 |
| 29 TEST(ConfigValuesExtractors, IncludeOrdering) { | 29 TEST(ConfigValuesExtractors, IncludeOrdering) { |
| 30 TestWithScope setup; | 30 TestWithScope setup; |
| 31 Err err; | 31 Err err; |
| 32 | 32 |
| 33 // Construct a chain of dependencies: target -> dep1 -> dep2 | 33 // Construct a chain of dependencies: target -> dep1 -> dep2 |
| 34 // Add representative values: cflags (opaque, always copied) and include_dirs | 34 // Add representative values: cflags (opaque, always copied) and include_dirs |
| 35 // (uniquified) to each one so we can check what comes out the other end. | 35 // (uniquified) to each one so we can check what comes out the other end. |
| 36 | 36 |
| 37 // Set up dep2, direct and all dependent configs. | 37 // Set up dep2, direct and all dependent configs. |
| 38 Config dep2_all(setup.settings(), Label(SourceDir("//dep2/"), "all")); | 38 Config dep2_all(setup.settings(), Label(SourceDir("//dep2/"), "all"), {}); |
| 39 dep2_all.own_values().cflags().push_back("--dep2-all"); | 39 dep2_all.own_values().cflags().push_back("--dep2-all"); |
| 40 dep2_all.own_values().include_dirs().push_back(SourceDir("//dep2/all/")); | 40 dep2_all.own_values().include_dirs().push_back(SourceDir("//dep2/all/")); |
| 41 ASSERT_TRUE(dep2_all.OnResolved(&err)); | 41 ASSERT_TRUE(dep2_all.OnResolved(&err)); |
| 42 | 42 |
| 43 Config dep2_direct(setup.settings(), Label(SourceDir("//dep2/"), "direct")); | 43 Config dep2_direct(setup.settings(), Label(SourceDir("//dep2/"), "direct"), |
| 44 {}); |
| 44 dep2_direct.own_values().cflags().push_back("--dep2-direct"); | 45 dep2_direct.own_values().cflags().push_back("--dep2-direct"); |
| 45 dep2_direct.own_values().include_dirs().push_back( | 46 dep2_direct.own_values().include_dirs().push_back( |
| 46 SourceDir("//dep2/direct/")); | 47 SourceDir("//dep2/direct/")); |
| 47 ASSERT_TRUE(dep2_direct.OnResolved(&err)); | 48 ASSERT_TRUE(dep2_direct.OnResolved(&err)); |
| 48 | 49 |
| 49 Target dep2(setup.settings(), Label(SourceDir("//dep2/"), "dep2")); | 50 Target dep2(setup.settings(), Label(SourceDir("//dep2/"), "dep2"), {}); |
| 50 dep2.set_output_type(Target::SOURCE_SET); | 51 dep2.set_output_type(Target::SOURCE_SET); |
| 51 dep2.visibility().SetPublic(); | 52 dep2.visibility().SetPublic(); |
| 52 dep2.SetToolchain(setup.toolchain()); | 53 dep2.SetToolchain(setup.toolchain()); |
| 53 dep2.all_dependent_configs().push_back(LabelConfigPair(&dep2_all)); | 54 dep2.all_dependent_configs().push_back(LabelConfigPair(&dep2_all)); |
| 54 dep2.public_configs().push_back(LabelConfigPair(&dep2_direct)); | 55 dep2.public_configs().push_back(LabelConfigPair(&dep2_direct)); |
| 55 | 56 |
| 56 // Set up dep1, direct and all dependent configs. Also set up a subconfig | 57 // Set up dep1, direct and all dependent configs. Also set up a subconfig |
| 57 // on "dep1_all" to test sub configs. | 58 // on "dep1_all" to test sub configs. |
| 58 Config dep1_all_sub(setup.settings(), Label(SourceDir("//dep1"), "allch")); | 59 Config dep1_all_sub(setup.settings(), Label(SourceDir("//dep1"), "allch"), |
| 60 {}); |
| 59 dep1_all_sub.own_values().cflags().push_back("--dep1-all-sub"); | 61 dep1_all_sub.own_values().cflags().push_back("--dep1-all-sub"); |
| 60 ASSERT_TRUE(dep1_all_sub.OnResolved(&err)); | 62 ASSERT_TRUE(dep1_all_sub.OnResolved(&err)); |
| 61 | 63 |
| 62 Config dep1_all(setup.settings(), Label(SourceDir("//dep1/"), "all")); | 64 Config dep1_all(setup.settings(), Label(SourceDir("//dep1/"), "all"), {}); |
| 63 dep1_all.own_values().cflags().push_back("--dep1-all"); | 65 dep1_all.own_values().cflags().push_back("--dep1-all"); |
| 64 dep1_all.own_values().include_dirs().push_back(SourceDir("//dep1/all/")); | 66 dep1_all.own_values().include_dirs().push_back(SourceDir("//dep1/all/")); |
| 65 dep1_all.configs().push_back(LabelConfigPair(&dep1_all_sub)); | 67 dep1_all.configs().push_back(LabelConfigPair(&dep1_all_sub)); |
| 66 ASSERT_TRUE(dep1_all.OnResolved(&err)); | 68 ASSERT_TRUE(dep1_all.OnResolved(&err)); |
| 67 | 69 |
| 68 Config dep1_direct(setup.settings(), Label(SourceDir("//dep1/"), "direct")); | 70 Config dep1_direct(setup.settings(), Label(SourceDir("//dep1/"), "direct"), |
| 71 {}); |
| 69 dep1_direct.own_values().cflags().push_back("--dep1-direct"); | 72 dep1_direct.own_values().cflags().push_back("--dep1-direct"); |
| 70 dep1_direct.own_values().include_dirs().push_back( | 73 dep1_direct.own_values().include_dirs().push_back( |
| 71 SourceDir("//dep1/direct/")); | 74 SourceDir("//dep1/direct/")); |
| 72 ASSERT_TRUE(dep1_direct.OnResolved(&err)); | 75 ASSERT_TRUE(dep1_direct.OnResolved(&err)); |
| 73 | 76 |
| 74 Target dep1(setup.settings(), Label(SourceDir("//dep1/"), "dep1")); | 77 Target dep1(setup.settings(), Label(SourceDir("//dep1/"), "dep1"), {}); |
| 75 dep1.set_output_type(Target::SOURCE_SET); | 78 dep1.set_output_type(Target::SOURCE_SET); |
| 76 dep1.visibility().SetPublic(); | 79 dep1.visibility().SetPublic(); |
| 77 dep1.SetToolchain(setup.toolchain()); | 80 dep1.SetToolchain(setup.toolchain()); |
| 78 dep1.all_dependent_configs().push_back(LabelConfigPair(&dep1_all)); | 81 dep1.all_dependent_configs().push_back(LabelConfigPair(&dep1_all)); |
| 79 dep1.public_configs().push_back(LabelConfigPair(&dep1_direct)); | 82 dep1.public_configs().push_back(LabelConfigPair(&dep1_direct)); |
| 80 dep1.private_deps().push_back(LabelTargetPair(&dep2)); | 83 dep1.private_deps().push_back(LabelTargetPair(&dep2)); |
| 81 | 84 |
| 82 // Set up target, direct and all dependent configs. | 85 // Set up target, direct and all dependent configs. |
| 83 Config target_all(setup.settings(), Label(SourceDir("//target/"), "all")); | 86 Config target_all(setup.settings(), Label(SourceDir("//target/"), "all"), {}); |
| 84 target_all.own_values().cflags().push_back("--target-all"); | 87 target_all.own_values().cflags().push_back("--target-all"); |
| 85 target_all.own_values().include_dirs().push_back(SourceDir("//target/all/")); | 88 target_all.own_values().include_dirs().push_back(SourceDir("//target/all/")); |
| 86 ASSERT_TRUE(target_all.OnResolved(&err)); | 89 ASSERT_TRUE(target_all.OnResolved(&err)); |
| 87 | 90 |
| 88 Config target_direct(setup.settings(), | 91 Config target_direct(setup.settings(), |
| 89 Label(SourceDir("//target/"), "direct")); | 92 Label(SourceDir("//target/"), "direct"), {}); |
| 90 target_direct.own_values().cflags().push_back("--target-direct"); | 93 target_direct.own_values().cflags().push_back("--target-direct"); |
| 91 target_direct.own_values().include_dirs().push_back( | 94 target_direct.own_values().include_dirs().push_back( |
| 92 SourceDir("//target/direct/")); | 95 SourceDir("//target/direct/")); |
| 93 ASSERT_TRUE(target_direct.OnResolved(&err)); | 96 ASSERT_TRUE(target_direct.OnResolved(&err)); |
| 94 | 97 |
| 95 // This config is applied directly to target. | 98 // This config is applied directly to target. |
| 96 Config target_config(setup.settings(), | 99 Config target_config(setup.settings(), |
| 97 Label(SourceDir("//target/"), "config")); | 100 Label(SourceDir("//target/"), "config"), {}); |
| 98 target_config.own_values().cflags().push_back("--target-config"); | 101 target_config.own_values().cflags().push_back("--target-config"); |
| 99 target_config.own_values().include_dirs().push_back( | 102 target_config.own_values().include_dirs().push_back( |
| 100 SourceDir("//target/config/")); | 103 SourceDir("//target/config/")); |
| 101 ASSERT_TRUE(target_config.OnResolved(&err)); | 104 ASSERT_TRUE(target_config.OnResolved(&err)); |
| 102 | 105 |
| 103 Target target(setup.settings(), Label(SourceDir("//target/"), "target")); | 106 Target target(setup.settings(), Label(SourceDir("//target/"), "target"), {}); |
| 104 target.set_output_type(Target::SOURCE_SET); | 107 target.set_output_type(Target::SOURCE_SET); |
| 105 target.SetToolchain(setup.toolchain()); | 108 target.SetToolchain(setup.toolchain()); |
| 106 target.all_dependent_configs().push_back(LabelConfigPair(&target_all)); | 109 target.all_dependent_configs().push_back(LabelConfigPair(&target_all)); |
| 107 target.public_configs().push_back(LabelConfigPair(&target_direct)); | 110 target.public_configs().push_back(LabelConfigPair(&target_direct)); |
| 108 target.configs().push_back(LabelConfigPair(&target_config)); | 111 target.configs().push_back(LabelConfigPair(&target_config)); |
| 109 target.private_deps().push_back(LabelTargetPair(&dep1)); | 112 target.private_deps().push_back(LabelTargetPair(&dep1)); |
| 110 | 113 |
| 111 // Additionally add some values directly on "target". | 114 // Additionally add some values directly on "target". |
| 112 target.config_values().cflags().push_back("--target"); | 115 target.config_values().cflags().push_back("--target"); |
| 113 target.config_values().include_dirs().push_back( | 116 target.config_values().include_dirs().push_back( |
| (...skipping 15 matching lines...) Expand all Loading... |
| 129 | 132 |
| 130 // Verify include dirs by serializing. | 133 // Verify include dirs by serializing. |
| 131 std::ostringstream include_out; | 134 std::ostringstream include_out; |
| 132 IncludeWriter include_writer; | 135 IncludeWriter include_writer; |
| 133 RecursiveTargetConfigToStream<SourceDir, IncludeWriter>( | 136 RecursiveTargetConfigToStream<SourceDir, IncludeWriter>( |
| 134 &target, &ConfigValues::include_dirs, include_writer, include_out); | 137 &target, &ConfigValues::include_dirs, include_writer, include_out); |
| 135 EXPECT_EQ(include_out.str(), | 138 EXPECT_EQ(include_out.str(), |
| 136 "//target/ //target/config/ //target/all/ //target/direct/ " | 139 "//target/ //target/config/ //target/all/ //target/direct/ " |
| 137 "//dep1/all/ //dep2/all/ //dep1/direct/ "); | 140 "//dep1/all/ //dep2/all/ //dep1/direct/ "); |
| 138 } | 141 } |
| OLD | NEW |