zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 4173a2bc24af6839f87b4b4dfd5096f34764d7cc (tree)
parent ee048d65692c6db9d084da951d3113af7db367aa
Author: Veikka Tuominen <git@vexu.eu>
Date:   Sat, 12 Jun 2021 20:32:11 +0300

add a test for dup and dup2

Diffstat:
Mlib/std/os/test.zig | 29+++++++++++++++++++++++++++++
1 file changed, 29 insertions(+), 0 deletions(-)

diff --git a/lib/std/os/test.zig b/lib/std/os/test.zig @@ -756,3 +756,32 @@ test "sigaction" { os.sigaction(os.SIGUSR1, null, &old_sa); try testing.expectEqual(os.SIG_DFL, old_sa.handler.sigaction); } + +test "dup & dup2" { + if (native_os != .linux) return error.SkipZigTest; + + var tmp = tmpDir(.{}); + defer tmp.cleanup(); + + { + var file = try tmp.dir.createFile("os_dup_test", .{}); + defer file.close(); + + var duped = std.fs.File{ .handle = try std.os.dup(file.handle) }; + defer duped.close(); + try duped.writeAll("dup"); + + // Tests aren't run in parallel so using the next fd shouldn't be an issue. + const new_fd = duped.handle + 1; + try std.os.dup2(file.handle, new_fd); + var dup2ed = std.fs.File{ .handle = new_fd }; + defer dup2ed.close(); + try dup2ed.writeAll("dup2"); + } + + var file = try tmp.dir.openFile("os_dup_test", .{}); + defer file.close(); + + var buf: [7]u8 = undefined; + try testing.expectEqualStrings("dupdup2", buf[0..try file.readAll(&buf)]); +}