mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
add a test for dup and dup2
This commit is contained in:
parent
ee048d6569
commit
4173a2bc24
@ -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)]);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user