| ... | @@ -1525,6 +1525,41 @@ test "sendfile" { | ... | @@ -1525,6 +1525,41 @@ test "sendfile" { |
| 1525 | try testing.expectEqualStrings("header1\nsecond header\nine1\nsecontrailer1\nsecond trailer\n", written_buf[0..amt]); | 1525 | try testing.expectEqualStrings("header1\nsecond header\nine1\nsecontrailer1\nsecond trailer\n", written_buf[0..amt]); |
| 1526 | } | 1526 | } |
| 1527 | | 1527 | |
| | 1528 | test "sendfile with buffered data" { |
| | 1529 | var tmp = tmpDir(.{}); |
| | 1530 | defer tmp.cleanup(); |
| | 1531 | |
| | 1532 | try tmp.dir.makePath("os_test_tmp"); |
| | 1533 | |
| | 1534 | var dir = try tmp.dir.openDir("os_test_tmp", .{}); |
| | 1535 | defer dir.close(); |
| | 1536 | |
| | 1537 | var src_file = try dir.createFile("sendfile1.txt", .{ .read = true }); |
| | 1538 | defer src_file.close(); |
| | 1539 | |
| | 1540 | try src_file.writeAll("AAAABBBB"); |
| | 1541 | |
| | 1542 | var dest_file = try dir.createFile("sendfile2.txt", .{ .read = true }); |
| | 1543 | defer dest_file.close(); |
| | 1544 | |
| | 1545 | var src_buffer: [32]u8 = undefined; |
| | 1546 | var file_reader = src_file.reader(&src_buffer); |
| | 1547 | |
| | 1548 | try file_reader.seekTo(0); |
| | 1549 | try file_reader.interface.fill(8); |
| | 1550 | |
| | 1551 | var fallback_buffer: [32]u8 = undefined; |
| | 1552 | var file_writer = dest_file.writer(&fallback_buffer); |
| | 1553 | |
| | 1554 | try std.testing.expectEqual(4, try file_writer.interface.sendFileAll(&file_reader, .limited(4))); |
| | 1555 | |
| | 1556 | var written_buf: [8]u8 = undefined; |
| | 1557 | const amt = try dest_file.preadAll(&written_buf, 0); |
| | 1558 | |
| | 1559 | try std.testing.expectEqual(4, amt); |
| | 1560 | try std.testing.expectEqualSlices(u8, "AAAA", written_buf[0..amt]); |
| | 1561 | } |
| | 1562 | |
| 1528 | test "copyRangeAll" { | 1563 | test "copyRangeAll" { |
| 1529 | var tmp = tmpDir(.{}); | 1564 | var tmp = tmpDir(.{}); |
| 1530 | defer tmp.cleanup(); | 1565 | defer tmp.cleanup(); |