• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #include "gn/command_format.h"
6 
7 #include "base/files/file_util.h"
8 #include "base/strings/string_util.h"
9 #include "gn/commands.h"
10 #include "gn/setup.h"
11 #include "gn/test_with_scheduler.h"
12 #include "util/exe_path.h"
13 #include "util/test/test.h"
14 
15 using FormatTest = TestWithScheduler;
16 
17 #define FORMAT_TEST(n)                                                      \
18   TEST_F(FormatTest, n) {                                                   \
19     ::Setup setup;                                                          \
20     std::string input;                                                      \
21     std::string out;                                                        \
22     std::string expected;                                                   \
23     base::FilePath src_dir =                                                \
24         GetExePath().DirName().Append(FILE_PATH_LITERAL(".."));             \
25     base::SetCurrentDirectory(src_dir);                                     \
26     ASSERT_TRUE(base::ReadFileToString(                                     \
27         base::FilePath(FILE_PATH_LITERAL("src/gn/format_test_data/")        \
28                            FILE_PATH_LITERAL(#n) FILE_PATH_LITERAL(".gn")), \
29         &input));                                                           \
30     ASSERT_TRUE(base::ReadFileToString(                                     \
31         base::FilePath(FILE_PATH_LITERAL("src/gn/format_test_data/")        \
32                            FILE_PATH_LITERAL(#n)                            \
33                                FILE_PATH_LITERAL(".golden")),               \
34         &expected));                                                        \
35     EXPECT_TRUE(commands::FormatStringToString(                             \
36         input, commands::TreeDumpMode::kInactive, &out, nullptr));          \
37     EXPECT_EQ(expected, out);                                               \
38     /* Make sure formatting the output doesn't cause further changes. */    \
39     std::string out_again;                                                  \
40     EXPECT_TRUE(commands::FormatStringToString(                             \
41         out, commands::TreeDumpMode::kInactive, &out_again, nullptr));      \
42     ASSERT_EQ(out, out_again);                                              \
43     /* Make sure we can roundtrip to json without any changes. */           \
44     std::string as_json;                                                    \
45     std::string unused;                                                     \
46     EXPECT_TRUE(commands::FormatStringToString(                             \
47         out_again, commands::TreeDumpMode::kJSON, &unused, &as_json));      \
48     std::string rewritten;                                                  \
49     EXPECT_TRUE(commands::FormatJsonToString(as_json, &rewritten));         \
50     ASSERT_EQ(out, rewritten);                                              \
51   }
52 
53 // These are expanded out this way rather than a runtime loop so that
54 // --gtest_filter works as expected for individual test running.
55 FORMAT_TEST(001)
56 FORMAT_TEST(002)
57 FORMAT_TEST(003)
58 FORMAT_TEST(004)
59 FORMAT_TEST(005)
60 FORMAT_TEST(006)
61 FORMAT_TEST(007)
62 FORMAT_TEST(008)
63 FORMAT_TEST(009)
64 FORMAT_TEST(010)
65 FORMAT_TEST(011)
66 FORMAT_TEST(012)
67 FORMAT_TEST(013)
68 FORMAT_TEST(014)
69 FORMAT_TEST(015)
70 FORMAT_TEST(016)
71 FORMAT_TEST(017)
72 FORMAT_TEST(018)
73 FORMAT_TEST(019)
74 FORMAT_TEST(020)
75 FORMAT_TEST(021)
76 FORMAT_TEST(022)
77 FORMAT_TEST(023)
78 FORMAT_TEST(024)
79 FORMAT_TEST(025)
80 FORMAT_TEST(026)
81 FORMAT_TEST(027)
82 FORMAT_TEST(028)
83 FORMAT_TEST(029)
84 FORMAT_TEST(030)
85 FORMAT_TEST(031)
86 FORMAT_TEST(032)
87 FORMAT_TEST(033)
88 // TODO(scottmg): args+rebase_path unnecessarily split: FORMAT_TEST(034)
89 FORMAT_TEST(035)
90 FORMAT_TEST(036)
91 FORMAT_TEST(037)
92 FORMAT_TEST(038)
93 FORMAT_TEST(039)
94 FORMAT_TEST(040)
95 FORMAT_TEST(041)
96 FORMAT_TEST(042)
97 FORMAT_TEST(043)
98 FORMAT_TEST(044)
99 FORMAT_TEST(045)
100 FORMAT_TEST(046)
101 FORMAT_TEST(047)
102 FORMAT_TEST(048)
103 // TODO(scottmg): Eval is broken (!) and comment output might have extra ,
104 //                FORMAT_TEST(049)
105 FORMAT_TEST(050)
106 FORMAT_TEST(051)
107 FORMAT_TEST(052)
108 FORMAT_TEST(053)
109 FORMAT_TEST(054)
110 FORMAT_TEST(055)
111 FORMAT_TEST(056)
112 FORMAT_TEST(057)
113 FORMAT_TEST(058)
114 FORMAT_TEST(059)
115 FORMAT_TEST(060)
116 FORMAT_TEST(061)
117 FORMAT_TEST(062)
118 FORMAT_TEST(063)
119 FORMAT_TEST(064)
120 FORMAT_TEST(065)
121 FORMAT_TEST(066)
122 FORMAT_TEST(067)
123 FORMAT_TEST(068)
124 FORMAT_TEST(069)
125 FORMAT_TEST(070)
126 FORMAT_TEST(071)
127 FORMAT_TEST(072)
128 FORMAT_TEST(073)
129 FORMAT_TEST(074)
130 FORMAT_TEST(075)
131 FORMAT_TEST(076)
132 FORMAT_TEST(077)
133 FORMAT_TEST(078)
134 FORMAT_TEST(079)
135 FORMAT_TEST(080)
136 FORMAT_TEST(081)
137 FORMAT_TEST(082)
138 FORMAT_TEST(083)
139 FORMAT_TEST(084)
140