From 0905bd058d03752d5f45ae04d10b70d6882d2321 Mon Sep 17 00:00:00 2001 From: LTLA Date: Sun, 19 Nov 2023 17:20:10 -0800 Subject: [PATCH] Strip out trailing newlines when reading object type. --- include/takane/utils_public.hpp | 5 +++++ tests/src/dispatch.cpp | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/takane/utils_public.hpp b/include/takane/utils_public.hpp index be52889..e484349 100644 --- a/include/takane/utils_public.hpp +++ b/include/takane/utils_public.hpp @@ -30,6 +30,11 @@ inline std::string read_object_type(const std::filesystem::path& path) { size_t available = reader.available(); output.insert(output.end(), buffer, buffer + available); } + + // Removing trailing newline. + if (output.size() && output.back() == '\n') { + output.pop_back(); + } return output; } diff --git a/tests/src/dispatch.cpp b/tests/src/dispatch.cpp index e674004..bbd8434 100644 --- a/tests/src/dispatch.cpp +++ b/tests/src/dispatch.cpp @@ -6,6 +6,28 @@ #include +TEST(ReadObjectTest, Basic) { + std::filesystem::path dir = "TEST_readObj"; + if (std::filesystem::exists(dir)) { + std::filesystem::remove_all(dir); + } + std::filesystem::create_directory(dir); + + // Works with a trailing newline. + auto objpath = dir / "OBJECT"; + { + std::ofstream output(objpath); + output << "foo_bar 2\n"; + } + EXPECT_EQ(takane::read_object_type(dir), "foo_bar 2"); + + { + std::ofstream output(objpath); + output << "baz-stuff"; + } + EXPECT_EQ(takane::read_object_type(dir), "baz-stuff"); +} + TEST(GenericDispatch, Validate) { std::filesystem::path dir = "TEST_dispatcher"; initialize_directory(dir, "foobar");