blob: 16f333d44debf85f66949c185ab66177d861beb0 [file] [log] [blame]
// 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