commit - 08ccfc53722463c40595b8e11f566431e84a7921
commit + 886065ca5e2da9d4daac54161930e699e5499455
blob - /dev/null
blob + f6e55cf26c42f99497b49487e91ae02e575e60b6 (mode 644)
--- /dev/null
+++ tests/tarantool_stdio.lua
+-- "Three bytes of death"
+-- https://github.com/tarantool/tarantool/issues/4773
+
+local luzer = require("luzer")
+local popen = require("popen")
+
+local TARANTOOL_PATH = arg[-1]
+
+local function TestOneInput(buf)
+ local ph = popen.new({ TARANTOOL_PATH }, {
+ shell = true,
+ setsid = true,
+ stdout = popen.opts.INHERIT,
+ stderr = popen.opts.INHERIT,
+ stdin = popen.opts.PIPE,
+ })
+ if not ph then
+ return
+ end
+ assert(ph)
+ ph:write(buf .. "\n")
+ ph:shutdown({ stdin = true })
+ ph:wait()
+ ph:close()
+end
+
+if arg[1] then
+ local fh = io.open(arg[1])
+ local testcase = fh:read("*all")
+ TestOneInput(testcase)
+ os.exit()
+end
+
+local script_path = debug.getinfo(1).source:match("@?(.*/)")
+
+local args = {
+ max_len = 4096,
+ print_pcs = 1,
+ detect_leaks = 1,
+ corpus = script_path .. "tarantool-corpus/stdio",
+ artifact_prefix = "stdio_",
+ max_total_time = 60,
+ print_final_stats = 1,
+}
+luzer.Fuzz(TestOneInput, nil, args)