| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 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 | 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 "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "tools/gn/output_file.h" | 9 #include "tools/gn/output_file.h" |
| 10 #include "tools/gn/path_output.h" | 10 #include "tools/gn/path_output.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 PathOutput writer(build_dir, source_root, ESCAPE_NINJA); | 77 PathOutput writer(build_dir, source_root, ESCAPE_NINJA); |
| 78 { | 78 { |
| 79 // Spaces and $ in filenames. | 79 // Spaces and $ in filenames. |
| 80 std::ostringstream out; | 80 std::ostringstream out; |
| 81 writer.WriteFile(out, SourceFile("//foo/foo bar$.cc")); | 81 writer.WriteFile(out, SourceFile("//foo/foo bar$.cc")); |
| 82 EXPECT_EQ("../../foo/foo$ bar$$.cc", out.str()); | 82 EXPECT_EQ("../../foo/foo$ bar$$.cc", out.str()); |
| 83 } | 83 } |
| 84 { | 84 { |
| 85 // Not other weird stuff | 85 // Not other weird stuff |
| 86 std::ostringstream out; | 86 std::ostringstream out; |
| 87 writer.WriteFile(out, SourceFile("//foo/\"foo\\bar\".cc")); | 87 writer.WriteFile(out, SourceFile("//foo/\"foo\".cc")); |
| 88 EXPECT_EQ("../../foo/\"foo\\bar\".cc", out.str()); | 88 EXPECT_EQ("../../foo/\"foo\".cc", out.str()); |
| 89 } | 89 } |
| 90 } | 90 } |
| 91 | 91 |
| 92 TEST(PathOutput, NinjaForkEscaping) { | 92 TEST(PathOutput, NinjaForkEscaping) { |
| 93 SourceDir build_dir("//out/Debug/"); | 93 SourceDir build_dir("//out/Debug/"); |
| 94 base::StringPiece source_root("/source/root"); | 94 base::StringPiece source_root("/source/root"); |
| 95 PathOutput writer(build_dir, source_root, ESCAPE_NINJA_COMMAND); | 95 PathOutput writer(build_dir, source_root, ESCAPE_NINJA_COMMAND); |
| 96 | 96 |
| 97 // Spaces in filenames should get quoted on Windows. | 97 // Spaces in filenames should get quoted on Windows. |
| 98 writer.set_escape_platform(ESCAPE_PLATFORM_WIN); | 98 writer.set_escape_platform(ESCAPE_PLATFORM_WIN); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 120 // change in the future. | 120 // change in the future. |
| 121 EXPECT_EQ("\"../../foo/\\\"foobar\\\".cc\"", out.str()); | 121 EXPECT_EQ("\"../../foo/\\\"foobar\\\".cc\"", out.str()); |
| 122 } | 122 } |
| 123 writer.set_escape_platform(ESCAPE_PLATFORM_POSIX); | 123 writer.set_escape_platform(ESCAPE_PLATFORM_POSIX); |
| 124 { | 124 { |
| 125 std::ostringstream out; | 125 std::ostringstream out; |
| 126 writer.WriteFile(out, SourceFile("//foo/\"foobar\".cc")); | 126 writer.WriteFile(out, SourceFile("//foo/\"foobar\".cc")); |
| 127 EXPECT_EQ("../../foo/\\\"foobar\\\".cc", out.str()); | 127 EXPECT_EQ("../../foo/\\\"foobar\\\".cc", out.str()); |
| 128 } | 128 } |
| 129 | 129 |
| 130 | |
| 131 // Backslashes should get escaped on non-Windows and preserved on Windows. | 130 // Backslashes should get escaped on non-Windows and preserved on Windows. |
| 132 writer.set_escape_platform(ESCAPE_PLATFORM_WIN); | 131 writer.set_escape_platform(ESCAPE_PLATFORM_WIN); |
| 133 { | 132 { |
| 134 std::ostringstream out; | 133 std::ostringstream out; |
| 135 writer.WriteFile(out, SourceFile("//foo\\bar.cc")); | 134 writer.WriteFile(out, OutputFile("foo\\bar.cc")); |
| 136 EXPECT_EQ("../../foo\\bar.cc", out.str()); | 135 EXPECT_EQ("foo\\bar.cc", out.str()); |
| 137 } | 136 } |
| 138 writer.set_escape_platform(ESCAPE_PLATFORM_POSIX); | 137 writer.set_escape_platform(ESCAPE_PLATFORM_POSIX); |
| 139 { | 138 { |
| 140 std::ostringstream out; | 139 std::ostringstream out; |
| 141 writer.WriteFile(out, SourceFile("//foo\\bar.cc")); | 140 writer.WriteFile(out, OutputFile("foo\\bar.cc")); |
| 142 EXPECT_EQ("../../foo\\\\bar.cc", out.str()); | 141 EXPECT_EQ("foo\\\\bar.cc", out.str()); |
| 143 } | 142 } |
| 144 } | 143 } |
| 145 | 144 |
| 146 TEST(PathOutput, InhibitQuoting) { | 145 TEST(PathOutput, InhibitQuoting) { |
| 147 SourceDir build_dir("//out/Debug/"); | 146 SourceDir build_dir("//out/Debug/"); |
| 148 base::StringPiece source_root("/source/root"); | 147 base::StringPiece source_root("/source/root"); |
| 149 PathOutput writer(build_dir, source_root, ESCAPE_NINJA_COMMAND); | 148 PathOutput writer(build_dir, source_root, ESCAPE_NINJA_COMMAND); |
| 150 writer.set_inhibit_quoting(true); | 149 writer.set_inhibit_quoting(true); |
| 151 | 150 |
| 152 writer.set_escape_platform(ESCAPE_PLATFORM_WIN); | 151 writer.set_escape_platform(ESCAPE_PLATFORM_WIN); |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 EXPECT_EQ("./", out.str()); | 274 EXPECT_EQ("./", out.str()); |
| 276 } | 275 } |
| 277 { | 276 { |
| 278 std::ostringstream out; | 277 std::ostringstream out; |
| 279 root_writer.WriteDir(out, SourceDir("//"), | 278 root_writer.WriteDir(out, SourceDir("//"), |
| 280 PathOutput::DIR_NO_LAST_SLASH); | 279 PathOutput::DIR_NO_LAST_SLASH); |
| 281 EXPECT_EQ(".", out.str()); | 280 EXPECT_EQ(".", out.str()); |
| 282 } | 281 } |
| 283 } | 282 } |
| 284 } | 283 } |
| OLD | NEW |