blob: 62ff782e7116e46b82330b7862e051ff49b6de0e [file] [log] [blame]
#!/usr/bin/env ruby
if not ARGV[0] or not ARGV[1] then
printf("Please provide two 'blitters-test' static binaries in the command line.\n\n")
printf("The first should be linked with a correct reference pixman library.\n")
printf("The second binary should be linked with a pixman library which needs to be tested.\n")
exit(0)
end
def test_range(min, max)
if `#{ARGV[0]} #{min} #{max} 2>/dev/null` == `#{ARGV[1]} #{min} #{max} 2>/dev/null` then
return
end
while max != min + 1 do
avg = ((min + max) / 2).to_i
res1 = `#{ARGV[0]} #{min} #{avg} 2>/dev/null`
res2 = `#{ARGV[1]} #{min} #{avg} 2>/dev/null`
if res1 != res2 then
max = avg
else
min = avg
end
end
return max
end
base = 1
while true do
# run infinitely, processing 100000 test cases per iteration
printf("running tests %d-%d\n", base, base + 100000 - 1);
res = test_range(base, base + 100000 - 1)
if res then
printf("-- ref --\n")
printf("%s\n", `#{ARGV[0]} -#{res}`)
printf("-- new --\n")
printf("%s\n", `#{ARGV[1]} -#{res}`)
printf("\nFailed test %d, you can reproduce the problematic conditions by running\n", res)
printf("#{ARGV[1]} -%d\n", res)
exit(1)
end
base += 100000
end