module ParallelTests::Tasks
def suppress_output(command, ignore_regex)
- do not use ' since run_in_parallel uses them to quote stuff
- defining a new rake task like silence_schema would force users to load parallel_tests in test env
- pipefail is not supported in (zsh)
- pipefail makes pipe fail with exitstatus of first failed command
- sed changes 1 exitstatus to 0
- grep changes 0 exitstatus to 1 if nothing matches
- sed does not support | without -r
normally I'd not do this, but it has been lots of fun and a great learning experience :)
removing certain lines from the output without chaning the exit-status
this is a crazy-complex solution for a very simple problem:
def suppress_output(command, ignore_regex) activate_pipefail = "set -o pipefail" remove_ignored_lines = %Q{(grep -v "#{ignore_regex}" || test 1)} if system("#{activate_pipefail} 2>/dev/null && test 1") "#{activate_pipefail} && (#{command}) | #{remove_ignored_lines}" else command end end