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