// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "gn/file_writer.h" #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" #include "gn/filesystem_utils.h" #include "util/build_config.h" #include "util/sys_info.h" #include "util/test/test.h" TEST(FileWriter, SingleWrite) { base::ScopedTempDir temp_dir; ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); const std::string data = "foo"; base::FilePath file_path = temp_dir.GetPath().AppendASCII("foo.txt"); FileWriter writer; EXPECT_TRUE(writer.Create(file_path)); EXPECT_TRUE(writer.Write(data)); EXPECT_TRUE(writer.Close()); EXPECT_TRUE(ContentsEqual(file_path, data)); } TEST(FileWriter, MultipleWrites) { base::ScopedTempDir temp_dir; ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); const std::string data = "Hello World!"; base::FilePath file_path = temp_dir.GetPath().AppendASCII("foo.txt"); FileWriter writer; EXPECT_TRUE(writer.Create(file_path)); EXPECT_TRUE(writer.Write("Hello ")); EXPECT_TRUE(writer.Write("World!")); EXPECT_TRUE(writer.Close()); EXPECT_TRUE(ContentsEqual(file_path, data)); } #if defined(OS_WIN) TEST(FileWriter, LongPathWrite) { if (!IsLongPathsSupportEnabled()) return; base::ScopedTempDir temp_dir; ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); const std::string data = "Hello World!"; base::FilePath file_path = temp_dir.GetPath().AppendASCII(std::string(255, 'A')); EXPECT_GE(file_path.value().size(), MAX_PATH); FileWriter writer; EXPECT_TRUE(writer.Create(file_path)); EXPECT_TRUE(writer.Write(data)); EXPECT_TRUE(writer.Close()); EXPECT_TRUE(ContentsEqual(file_path, data)); } #endif