diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2018-01-23 15:12:51 +0300 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2018-01-26 14:42:48 +0300 |
commit | 54ca8d0d6c4744be53c7044b9bbfa05acc358090 (patch) | |
tree | b4258bc91245eca92b2ef5321f18e67ee524c61c /lib/gitlab/popen | |
parent | a0d57ee2b35f0e232aff930a94dfbcabe2860158 (diff) |
Fail static-analysis if there's output to stderr
TODO: fix offenders
Diffstat (limited to 'lib/gitlab/popen')
-rw-r--r-- | lib/gitlab/popen/runner.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/gitlab/popen/runner.rb b/lib/gitlab/popen/runner.rb new file mode 100644 index 00000000000..36284134707 --- /dev/null +++ b/lib/gitlab/popen/runner.rb @@ -0,0 +1,46 @@ +module Gitlab + module Popen + class Runner + attr_reader :results + + def initialize + @results = [] + end + + def run(commands, &block) + commands.each do |cmd| + # yield doesn't support blocks, so we need to use a block variable + block.call(cmd) do # rubocop:disable Performance/RedundantBlockCall + cmd_result = Gitlab::Popen.popen_with_detail(cmd) + + results << cmd_result + + cmd_result + end + end + end + + def all_good? + all_status_zero? && all_stderr_empty? + end + + def all_status_zero? + results.all? { |result| result.status.zero? } + end + + def all_stderr_empty? + results.all? { |result| result.stderr.empty? } + end + + def failed_results + results.select { |result| result.status.nonzero? } + end + + def warned_results + results.select do |result| + result.status.zero? && !result.stderr.empty? + end + end + end + end +end |