mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-15 12:23:15 +00:00
LibDiff: Handle parsing patches containing timestamps separated by \t
This is still a very naive implementation and there are plenty of other cases that we should handle (like a quoted path) - but just looking for a tab handles the common case.
This commit is contained in:
parent
3e3a200eee
commit
3e61d20b40
|
@ -261,3 +261,18 @@ TEST_CASE(patch_remove_file_trailing_garbage)
|
||||||
|
|
||||||
EXPECT_FILE_EQ(ByteString::formatted("{}/a", s_test_dir), "2\n"sv);
|
EXPECT_FILE_EQ(ByteString::formatted("{}/a", s_test_dir), "2\n"sv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE(patch_with_timestamp_separated_by_tab)
|
||||||
|
{
|
||||||
|
PatchSetup setup;
|
||||||
|
|
||||||
|
auto patch = R"(
|
||||||
|
--- /dev/null 2024-03-02 20:19:31.462146900 +1300
|
||||||
|
+++ 1 2024-03-02 20:56:57.922136203 +1300
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+a
|
||||||
|
)"sv;
|
||||||
|
|
||||||
|
run_patch(ExpectSuccess::Yes, {}, patch, "patching file 1\n"sv);
|
||||||
|
EXPECT_FILE_EQ(ByteString::formatted("{}/1", s_test_dir), "a\n"sv);
|
||||||
|
}
|
||||||
|
|
|
@ -61,7 +61,10 @@ bool Parser::consume_line_number(size_t& number)
|
||||||
ErrorOr<String> Parser::parse_file_line(Optional<size_t> const& strip_count)
|
ErrorOr<String> Parser::parse_file_line(Optional<size_t> const& strip_count)
|
||||||
{
|
{
|
||||||
// FIXME: handle parsing timestamps as well.
|
// FIXME: handle parsing timestamps as well.
|
||||||
auto path = consume_line();
|
auto line = consume_line();
|
||||||
|
|
||||||
|
GenericLexer line_parser(line);
|
||||||
|
auto path = line_parser.consume_until('\t');
|
||||||
|
|
||||||
// No strip count given. Default to basename of file.
|
// No strip count given. Default to basename of file.
|
||||||
if (!strip_count.has_value())
|
if (!strip_count.has_value())
|
||||||
|
|
Loading…
Reference in a new issue