OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "testing/gtest/include/gtest/gtest.h" | |
6 | |
7 #include "tools/gn/filesystem_utils.h" | |
8 #include "tools/gn/ninja_helper.h" | |
9 #include "tools/gn/settings.h" | |
10 #include "tools/gn/target.h" | |
11 #include "tools/gn/toolchain.h" | |
12 | |
13 namespace { | |
14 | |
15 class HelperSetterUpper { | |
16 public: | |
17 HelperSetterUpper() | |
18 : build_settings(), | |
19 toolchain(Label(SourceDir("//"), "tc", SourceDir(), std::string())), | |
20 settings(&build_settings, &toolchain, std::string()), | |
21 target(&settings, | |
22 Label(SourceDir("//tools/gn/"), "name", | |
23 SourceDir(), std::string())) { | |
24 settings.set_target_os(Settings::WIN); | |
25 | |
26 // Output going to "out/Debug". | |
27 build_settings.SetBuildDir(SourceDir("/out/Debug/")); | |
28 | |
29 // Our source target is in "tools/gn". | |
30 target.set_output_type(Target::EXECUTABLE); | |
31 } | |
32 | |
33 BuildSettings build_settings; | |
34 Toolchain toolchain; | |
35 Settings settings; | |
36 Target target; | |
37 }; | |
38 | |
39 } // namespace | |
40 | |
41 TEST(NinjaHelper, GetNinjaFileForTarget) { | |
42 HelperSetterUpper setup; | |
43 NinjaHelper helper(&setup.build_settings); | |
44 | |
45 // Default toolchain. | |
46 EXPECT_EQ(OutputFile("obj/tools/gn/name.ninja").value(), | |
47 helper.GetNinjaFileForTarget(&setup.target).value()); | |
48 } | |
49 | |
50 TEST(NinjaHelper, GetOutputFileForSource) { | |
51 HelperSetterUpper setup; | |
52 NinjaHelper helper(&setup.build_settings); | |
53 | |
54 // On Windows, expect ".obj" | |
55 EXPECT_EQ(OutputFile("obj/tools/gn/name.foo.obj").value(), | |
56 helper.GetOutputFileForSource(&setup.target, | |
57 SourceFile("//tools/gn/foo.cc"), | |
58 SOURCE_CC).value()); | |
59 } | |
60 | |
61 TEST(NinjaHelper, GetTargetOutputFile) { | |
62 HelperSetterUpper setup; | |
63 NinjaHelper helper(&setup.build_settings); | |
64 EXPECT_EQ(OutputFile("name.exe"), | |
65 helper.GetTargetOutputFile(&setup.target)); | |
66 | |
67 // Static library on Windows goes alongside the object files. | |
68 setup.target.set_output_type(Target::STATIC_LIBRARY); | |
69 EXPECT_EQ(OutputFile("obj/tools/gn/name.lib"), | |
70 helper.GetTargetOutputFile(&setup.target)); | |
71 | |
72 // TODO(brettw) test output to library and other OS types. | |
73 } | |
OLD | NEW |