blob: fab90a1313a0a4618f29bfc0dc522fc42b998a96 [file] [log] [blame] [edit]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <string>
#include <base/files/file_util.h>
#include <base/files/scoped_temp_dir.h>
#include <gtest/gtest.h>
#include "diagnostics/cros_minidiag/utils.h"
namespace cros_minidiag {
namespace {
constexpr const char kMockFileName[] = "last-line";
constexpr const char kMockLine[] = "mock";
class GetPrevElogLastLineTest : public testing::Test {
protected:
void SetUp() override {
CHECK(scoped_temp_dir_.CreateUniqueTempDir());
path_ = scoped_temp_dir_.GetPath().Append(kMockFileName);
ret_line_.clear();
}
base::ScopedTempDir scoped_temp_dir_;
base::FilePath path_;
std::string ret_line_ = "";
};
TEST_F(GetPrevElogLastLineTest, BaseLastLine) {
EXPECT_EQ(base::WriteFile(path_, kMockLine), true);
EXPECT_EQ(GetPrevElogLastLine(path_, ret_line_), true);
EXPECT_EQ(ret_line_, kMockLine);
}
TEST_F(GetPrevElogLastLineTest, LastLineTrimTail) {
std::string line_tail_space(kMockLine);
line_tail_space.append(" \n");
EXPECT_EQ(base::WriteFile(path_, line_tail_space), true);
EXPECT_EQ(GetPrevElogLastLine(path_, ret_line_), true);
EXPECT_EQ(ret_line_, kMockLine);
}
TEST_F(GetPrevElogLastLineTest, LastLineNoTrimLeadSpace) {
std::string line_lead_space(" ");
line_lead_space.append(kMockLine);
EXPECT_EQ(base::WriteFile(path_, line_lead_space), true);
EXPECT_EQ(GetPrevElogLastLine(path_, ret_line_), true);
EXPECT_EQ(ret_line_, line_lead_space);
}
TEST_F(GetPrevElogLastLineTest, BadFileName) {
const auto bad_path = scoped_temp_dir_.GetPath().Append("bad-path");
EXPECT_EQ(GetPrevElogLastLine(bad_path, ret_line_), false);
EXPECT_EQ(ret_line_, "");
}
TEST_F(GetPrevElogLastLineTest, BadFileSize) {
std::string long_string = "";
while (long_string.length() <= cros_minidiag::kMaxFileSize) {
long_string.append(kMockLine);
}
EXPECT_EQ(base::WriteFile(path_, long_string), true);
EXPECT_EQ(GetPrevElogLastLine(path_, ret_line_), false);
EXPECT_EQ(ret_line_, "");
}
} // namespace
} // namespace cros_minidiag