size: 959 B
const std = @import("std"); const mem = std.mem; const t = std.testing; pub fn toHtml(arena: mem.Allocator, text: []const u8) ![]const u8 { var child = std.process.Child.init(&.{"cmark"}, arena); child.stdin_behavior = .Pipe; child.stdout_behavior = .Pipe; child.stderr_behavior = .Pipe; var stdout: std.ArrayList(u8) = .empty; var stderr: std.ArrayList(u8) = .empty; try child.spawn(); errdefer { _ = child.kill() catch {}; } try child.stdin.?.writeAll(text); child.stdin.?.close(); child.stdin = null; try child.collectOutput(arena, &stdout, &stderr, 64 * 1024); _ = try child.wait(); return stdout.items; } test "toHtml" { var arena_impl = std.heap.ArenaAllocator.init(t.allocator_instance.allocator()); defer arena_impl.deinit(); const arena = arena_impl.allocator(); try t.expectEqualStrings( "<h1>foo</h1>\n", try toHtml(arena, "# foo"), ); }