fix(file_handler): avoid writing extra newline character (#2335)

This commit is contained in:
ReenigneArcher 2024-05-12 13:13:20 -04:00 committed by GitHub
parent 6674090052
commit 659a426b03
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 46 additions and 15 deletions

View File

@ -31,16 +31,7 @@ namespace file_handler {
}
std::ifstream in(path);
std::string input;
std::string base64_cert;
while (!in.eof()) {
std::getline(in, input);
base64_cert += input + '\n';
}
return base64_cert;
return std::string { (std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>() };
}
/**

View File

@ -6,14 +6,54 @@
#include <tests/conftest.cpp>
TEST(FileHandlerTests, WriteFileTest) {
EXPECT_EQ(file_handler::write_file("write_file_test.txt", "test"), 0);
class FileHandlerTests: public virtual BaseTest, public ::testing::WithParamInterface<std::tuple<int, std::string>> {
protected:
void
SetUp() override {
BaseTest::SetUp();
}
void
TearDown() override {
BaseTest::TearDown();
}
};
INSTANTIATE_TEST_SUITE_P(
TestFiles,
FileHandlerTests,
::testing::Values(
std::make_tuple(0, ""), // empty file
std::make_tuple(1, "a"), // single character
std::make_tuple(2, "Mr. Blue Sky - Electric Light Orchestra"), // single line
std::make_tuple(3, R"(
Morning! Today's forecast calls for blue skies
The sun is shining in the sky
There ain't a cloud in sight
It's stopped raining
Everybody's in the play
And don't you know, it's a beautiful new day
Hey, hey, hey!
Running down the avenue
See how the sun shines brightly in the city
All the streets where once was pity
Mr. Blue Sky is living here today!
Hey, hey, hey!
)") // multi-line
));
TEST_P(FileHandlerTests, WriteFileTest) {
auto [fileNum, content] = GetParam();
std::string fileName = "write_file_test_" + std::to_string(fileNum) + ".txt";
EXPECT_EQ(file_handler::write_file(fileName.c_str(), content), 0);
}
TEST(FileHandlerTests, ReadFileTest) {
// read file from WriteFileTest
EXPECT_EQ(file_handler::read_file("write_file_test.txt"), "test\n"); // sunshine adds a newline
TEST_P(FileHandlerTests, ReadFileTest) {
auto [fileNum, content] = GetParam();
std::string fileName = "write_file_test_" + std::to_string(fileNum) + ".txt";
EXPECT_EQ(file_handler::read_file(fileName.c_str()), content);
}
TEST(FileHandlerTests, ReadMissingFileTest) {
// read missing file
EXPECT_EQ(file_handler::read_file("non-existing-file.txt"), "");
}