Skip to content

Commit f4dc005

Browse files
hlovdalianfixes
authored andcommitted
Add function to merge results from multiple run_and_capture invocations
1 parent 5e63241 commit f4dc005

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

lib/arduino_ci/host.rb

+10
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@ def self.run_and_capture(*args, **kwargs)
3535
{ out: stdout, err: stderr, success: status.exitstatus.zero? }
3636
end
3737

38+
def self.merge_capture_results(args)
39+
result = { out: "", err: "", success: true }
40+
args.each do |a|
41+
result[:out] = result[:out] + a[:out]
42+
result[:err] = result[:err] + a[:err]
43+
result[:success] = a[:success] unless a[:success]
44+
end
45+
result
46+
end
47+
3848
def self.run_and_output(*args, **kwargs)
3949
system(*args, **kwargs)
4050
end

spec/host_spec.rb

+19
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,23 @@ def with_tmpdir(path)
7171
end
7272
end
7373

74+
context "merge_capture_results" do
75+
it "merges results" do
76+
a1 = { out: "one", err: "ONE", success: true }
77+
a2 = { out: "two", err: "TWO", success: false }
78+
a3 = { out: "three", err: "THREE", success: true }
79+
res = ArduinoCI::Host.merge_capture_results([a1, a2, a3])
80+
expect(res[:out]).to eq("onetwothree")
81+
expect(res[:err]).to eq("ONETWOTHREE")
82+
expect(res[:success]).to eq(false)
83+
end
84+
85+
it "handles empty input" do
86+
res = ArduinoCI::Host.merge_capture_results([])
87+
expect(res[:out]).to eq("")
88+
expect(res[:err]).to eq("")
89+
expect(res[:success]).to eq(true)
90+
end
91+
end
92+
7493
end

0 commit comments

Comments
 (0)