• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2020 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/file_writer.h"
6 
7 #include "base/files/file_path.h"
8 #include "base/files/scoped_temp_dir.h"
9 #include "gn/filesystem_utils.h"
10 
11 #include "util/build_config.h"
12 #include "util/sys_info.h"
13 #include "util/test/test.h"
14 
TEST(FileWriter,SingleWrite)15 TEST(FileWriter, SingleWrite) {
16   base::ScopedTempDir temp_dir;
17   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
18 
19   const std::string data = "foo";
20 
21   base::FilePath file_path = temp_dir.GetPath().AppendASCII("foo.txt");
22 
23   FileWriter writer;
24   EXPECT_TRUE(writer.Create(file_path));
25   EXPECT_TRUE(writer.Write(data));
26   EXPECT_TRUE(writer.Close());
27 
28   EXPECT_TRUE(ContentsEqual(file_path, data));
29 }
30 
TEST(FileWriter,MultipleWrites)31 TEST(FileWriter, MultipleWrites) {
32   base::ScopedTempDir temp_dir;
33   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
34 
35   const std::string data = "Hello World!";
36 
37   base::FilePath file_path = temp_dir.GetPath().AppendASCII("foo.txt");
38 
39   FileWriter writer;
40   EXPECT_TRUE(writer.Create(file_path));
41   EXPECT_TRUE(writer.Write("Hello "));
42   EXPECT_TRUE(writer.Write("World!"));
43   EXPECT_TRUE(writer.Close());
44 
45   EXPECT_TRUE(ContentsEqual(file_path, data));
46 }
47 
48 #if defined(OS_WIN)
TEST(FileWriter,LongPathWrite)49 TEST(FileWriter, LongPathWrite) {
50   if (!IsLongPathsSupportEnabled())
51     return;
52 
53   base::ScopedTempDir temp_dir;
54   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
55 
56   const std::string data = "Hello World!";
57 
58   base::FilePath file_path = temp_dir.GetPath().AppendASCII(std::string(255, 'A'));
59 
60   EXPECT_GE(file_path.value().size(), MAX_PATH);
61 
62   FileWriter writer;
63   EXPECT_TRUE(writer.Create(file_path));
64   EXPECT_TRUE(writer.Write(data));
65   EXPECT_TRUE(writer.Close());
66 
67   EXPECT_TRUE(ContentsEqual(file_path, data));
68 }
69 #endif