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)); \ 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)); \ 42 ASSERT_EQ(out, out_again); \ 43 } 44 45 // These are expanded out this way rather than a runtime loop so that 46 // --gtest_filter works as expected for individual test running. 47 FORMAT_TEST(001) 48 FORMAT_TEST(002) 49 FORMAT_TEST(003) 50 FORMAT_TEST(004) 51 FORMAT_TEST(005) 52 FORMAT_TEST(006) 53 FORMAT_TEST(007) 54 FORMAT_TEST(008) 55 FORMAT_TEST(009) 56 FORMAT_TEST(010) 57 FORMAT_TEST(011) 58 FORMAT_TEST(012) 59 FORMAT_TEST(013) 60 FORMAT_TEST(014) 61 FORMAT_TEST(015) 62 FORMAT_TEST(016) 63 FORMAT_TEST(017) 64 FORMAT_TEST(018) 65 FORMAT_TEST(019) 66 FORMAT_TEST(020) 67 FORMAT_TEST(021) 68 FORMAT_TEST(022) 69 FORMAT_TEST(023) 70 FORMAT_TEST(024) 71 FORMAT_TEST(025) 72 FORMAT_TEST(026) 73 FORMAT_TEST(027) 74 FORMAT_TEST(028) 75 FORMAT_TEST(029) 76 FORMAT_TEST(030) 77 FORMAT_TEST(031) 78 FORMAT_TEST(032) 79 FORMAT_TEST(033) 80 // TODO(scottmg): args+rebase_path unnecessarily split: FORMAT_TEST(034) 81 FORMAT_TEST(035) 82 FORMAT_TEST(036) 83 FORMAT_TEST(037) 84 FORMAT_TEST(038) 85 FORMAT_TEST(039) 86 FORMAT_TEST(040) 87 FORMAT_TEST(041) 88 FORMAT_TEST(042) 89 FORMAT_TEST(043) 90 FORMAT_TEST(044) 91 FORMAT_TEST(045) 92 FORMAT_TEST(046) 93 FORMAT_TEST(047) 94 FORMAT_TEST(048) 95 // TODO(scottmg): Eval is broken (!) and comment output might have extra , 96 // FORMAT_TEST(049) 97 FORMAT_TEST(050) 98 FORMAT_TEST(051) 99 FORMAT_TEST(052) 100 FORMAT_TEST(053) 101 FORMAT_TEST(054) 102 FORMAT_TEST(055) 103 FORMAT_TEST(056) 104 FORMAT_TEST(057) 105 FORMAT_TEST(058) 106 FORMAT_TEST(059) 107 FORMAT_TEST(060) 108 FORMAT_TEST(061) 109 FORMAT_TEST(062) 110 FORMAT_TEST(063) 111 FORMAT_TEST(064) 112 FORMAT_TEST(065) 113 FORMAT_TEST(066) 114 FORMAT_TEST(067) 115 FORMAT_TEST(068) 116 FORMAT_TEST(069) 117 FORMAT_TEST(070) 118 FORMAT_TEST(071) 119 FORMAT_TEST(072) 120 FORMAT_TEST(073) 121 FORMAT_TEST(074) 122 FORMAT_TEST(075) 123 FORMAT_TEST(076) 124 FORMAT_TEST(077) 125 FORMAT_TEST(078) 126 FORMAT_TEST(079) 127 FORMAT_TEST(080) 128 FORMAT_TEST(081) 129